【发布时间】:2016-05-12 18:43:17
【问题描述】:
如果我尝试编译一个文件(error_c11.cpp),其内容是:
#if 0
#error This shouldn't be a problem
#endif
使用命令行:
gcc error_c11.cpp
我收到以下警告(然后是一些关于 main 的其他链接器错误):
error_c11.cpp:2:20: warning: missing terminating ' character
#error This shouldn't be a problem
相反,使用 clang 或 Visual Studio 编译相同的代码不会给出任何警告。这是gcc(使用v4.9.3)中的错误,还是' 预处理器指令中不允许使用' 字符,而其他编译器更宽松?
【问题讨论】:
-
按照语法是#error pp-tokens newline,其中pp-tokens是一个或多个preprocessing-token,其中包括 character-literal。我可以看到这是无效的语法。
-
嗯,这实际上是一个警告。似乎即使是 c 预处理器也倾向于在静态代码分析上使用 AI 功能。
-
尝试将您的信息放在双引号中。
-
@KirillKobelev,使用 Clang 进行测试,导致错误引用错误消息,这并不理想,但很接近。
标签: c++ c-preprocessor