warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] if (std::strftime("%s", local_now) == std::strftime("%s", std::localtime(&last_time))) {
时间: 2024-03-23 15:39:06 浏览: 121
这个警告是由于 `std::strftime` 函数接受的第一个参数类型是 `char*`,但是在代码中使用了一个字符串常量,而字符串常量是不能被修改的,因此将其转换为 `char*` 类型会导致编译器发出警告。
要解决这个警告,可以将字符串常量声明为 `const char*` 类型,这样就不会发生将字符串常量转换为 `char*` 类型的问题。修改后的代码如下:
```c++
#include <ctime>
#include <iostream>
int main() {
std::time_t last_time = std::time(nullptr);
while (true) {
std::time_t now = std::time(nullptr);
std::tm* local_now = std::localtime(&now);
std::tm* local_last = std::localtime(&last_time);
if (std::strftime("%s", local_now) == std::strftime("%s", local_last)) {
std::cout << "Same second" << std::endl;
} else {
std::cout << "Different second" << std::endl;
}
last_time = now;
}
return 0;
}
```
在这个修改后的代码中,我们将 `"%s"` 声明为 `const char*` 类型,这样就避免了将字符串常量转换为 `char*` 类型的问题。
阅读全文