static char THIS_FILE[] = _FILE_;报错空初始值设定项对于带有未指定绑定的参数组无效
时间: 2024-09-12 07:14:51 浏览: 368
open_file--java-application.rar_open_open ap4 file_open jar file
在C++中,`static char THIS_FILE[] = _FILE_;` 这行代码用于在编译时获取当前文件的文件名。`_FILE_` 是一个预定义的宏,它在预处理阶段被替换为当前文件的路径。然而,这行代码可能会遇到编译错误,特别是你提到的“空初始值设定项对于带有未指定绑定的参数组无效”。
这种错误通常是由于编译器不支持在全局或静态作用域中使用非常量表达式进行数组初始化。在C++11之前,全局或静态数组必须使用常量表达式进行初始化。`_FILE_` 宏的值在编译时是已知的,因此它实际上是一个常量表达式,理论上应该能够用于初始化。但有些编译器可能会因为优化或其他原因而对这种情况有限制。
如果你遇到了这个编译错误,你可以尝试以下几种解决办法:
1. 确保你的编译器支持你正在使用的语法和特性。
2. 检查是否使用了正确的编译器标志。对于某些编译器,可能需要特定的编译选项来启用对这种用法的支持。
3. 如果上述办法都不行,你还可以尝试手动定义一个字符串常量来表示文件名,并用这个字符串常量来初始化数组。
示例代码(使用C++11或更高版本):
```cpp
constexpr const char* THIS_FILE = __FILE__;
```
阅读全文