【发布时间】:2021-08-04 22:29:13
【问题描述】:
我正在使用 C99 编译器编译的一些正在运行的遗留 C 代码,我在头文件中间的一个空行上遇到了一个“#”(哈希符号)。我使用 -Wall、-Werrors 和 -pedantic 进行编译,但运行我的单元测试的 GCC 编译器或我的目标交叉编译器没有收到任何投诉。我对语言和预处理器的 BNF 语法进行了快速谷歌搜索,但无法弄清楚流浪 # 会发生什么。它恰好在第 1 列,但如果我将它移到第 2 列,它仍然不会发出任何警告。 我的 GCC 编译器是 gcc(Rev1,由 MSYS2 项目构建)9.1.0。
真的不是问题,只是出乎意料。
有人有什么见解吗?
【问题讨论】:
-
如果您有 c 问题,请不要添加 c++ 标签。如果您确实想知道 c++ 的规则,请参阅stackoverflow.com/questions/62076620 这里的规则恰好基本相同,因为它涉及预处理器,但您仍然不应该对这些语言进行双重标记。
-
我认为 C++ 标签在这里是合适的,因为我们经常在我们的标题中使用#ifdef __cplusplus hack。 (在嵌入式框架中很常见)和预处理器是非常接近的表亲。不过谢谢你的提醒。
标签: c c-preprocessor