我的C ++项目中有4级警告我要解决警告
警告1警告C4996:'gmtime':此函数或变量可能是 不安全的。请考虑使用gmtime_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。
警告2警告C4996:'asctime':此函数或变量可能是 不安全的。请考虑使用asctime_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。
代码C ++
time_t ltime;
time(<ime);
tm* gmt = gmtime(<ime);
char* asctime_remove_nl = asctime(gmt);
答案 0 :(得分:1)
下面的函数返回指向可能被其他后续调用(K&amp; R Book)覆盖的静态对象的指针。因此,它们不被认为是安全的,并且由于VS编译器会给出警告/错误。可以通过在项目中添加MACRO(.proj文件)(CRT_SECURE_NO_WARNINGS)来删除它。
gmtime()
asctime()
但是,我们可以编写小实用程序函数来复制这些静态字符串。
// This would return the copy of time/date in std::string object to caller
std::string get_gmtime_asctime() {
time_t ltime;
time(<ime);
struct tm* gt = ::gmtime(<ime);
char* tmp = ::asctime(gt);
std::string output(tmp);
return output;
}
int main() {
std::string out = get_gmtime_asctime();
std::cout<<out<<std::endl;
}