編譯器消息來自使用ctime
可言,但你的使用會給出不正確的結果:調用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;
}
等等,微軟是否將C4996的類型從警告改爲錯誤? – Medinoc