我制作了一个自定义打印功能,它打印带有时间戳的消息。但是当我编译它时,编译器会说“格式字符串不是字符串文字”。它仍然可以正常编译,但我有点被这个错误困扰,因为编译器还说这可能不安全,所以我想修复它。
void Log(const char *message, ...)
{
time_t rawtime;
struct tm* timeinfo;
char timestamp[11];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(timestamp, 11, "%X: ", timeinfo);
fprintf(stdout, timestamp); // format not a string literal and no format arguments [-Wformat-security]
va_list args;
va_start(args, message);
vfprintf(stdout, message, args);
va_end(args);
fprintf(stdout, "\n");
}
我尝试将其更改timestamp
为 aconst char*
但随后strftime
不接受它并且警告仍然存在。
我该如何解决这个问题,有没有办法优化这个功能(因为我不太了解C IO library
)?