错误C4996:'ctime'

时间:2013-06-27 11:24:34

标签: c++ ctime

我有一个关于静态源代码分析的项目。 错误消息:“错误C4996:'ctime':此函数或变量可能不安全”。 这是我在ctime中得到错误的代码的一部分。 如果有人能帮助我克服这个错误,我会很高兴。

 virtual bool onTLSConnect( const CertInfo& info )
    {
      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(), ctime( (const time_t*)&info.date_from ),
              ctime( (const time_t*)&info.date_to ) );
      return true;
    }

1 个答案:

答案 0 :(得分:0)

编译器消息来自使用ctime,但您的使用会产生错误的结果:对ctime的两次调用都会将相同的地址返回到内部的静态线程本地缓冲区,这意味着您对{的调用{1}}将错误地显示相同的日期。

至少应该这样做:

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