编译器消息完全来自 using ctime
,但您的 use 将给出不正确的结果:对 ctime 的两次调用都会将相同的地址返回到内部、静态、线程本地缓冲区,这意味着您的调用printf
将错误地显示相同的日期。
至少,您应该这样做:
virtual bool onTLSConnect( const CertInfo& info )
{
std::string dateFrom(ctime(reinterpret_cast< const time_t* >(&info.date_from));
std::string dateTo (ctime(reinterpret_cast< const time_t* >(&info.date_to));
printf( "status: %d\nissuer: %s\npeer: %s\nprotocol: %s\nmac: %s\ncipher: %s\ncompression: %s\n"
"from: %s\nto: %s\n",
info.status, info.issuer.c_str(), info.server.c_str(),
info.protocol.c_str(), info.mac.c_str(), info.cipher.c_str(),
info.compression.c_str(), dateFrom.c_str(),
dateTo.c_str() );
return true;
}
关于编译器,您可以使用 完全#define
禁用它,或者您可以在需要时禁用它:
virtual bool onTLSConnect( const CertInfo& info )
{
#pragma warning(push)
#pragma warning(disable:4996)
std::string dateFrom(ctime(reinterpret_cast< const time_t* >(&info.date_from));
std::string dateTo (ctime(reinterpret_cast< const time_t* >(&info.date_to));
#pragma warning(pop)
printf( "status: %d\nissuer: %s\npeer: %s\nprotocol: %s\nmac: %s\ncipher: %s\ncompression: %s\n"
"from: %s\nto: %s\n",
info.status, info.issuer.c_str(), info.server.c_str(),
info.protocol.c_str(), info.mac.c_str(), info.cipher.c_str(),
info.compression.c_str(), dateFrom.c_str(),
dateTo.c_str() );
return true;
}