【发布时间】:2018-08-14 08:46:43
【问题描述】:
是否有可能编译具有不同标志的代码的一部分 - 无需更改 makefile 中的标志?
我有一个未针对 -std=c11 设置的现有项目。现在我添加了自己的代码,编译器会告诉我类似
'for' loop initial declarations are only allowed in C99 or C11 mode
当我将标志更改为 std=c11 或 c99 时,程序的其余部分将不再编译。
C++ 中是否有类似 extern "C" {} 的东西告诉编译器将以下部分视为 std=c11?
谢谢
【问题讨论】:
-
您是否有理由不希望 C11 中的程序的其余部分?如果您不要求代码必须在 C90 中,那么正确的解决方案是将其全部转换为 C11。不应该这么费劲。因为如果您在选择
-std=c11时遇到编译器错误,那么这就是代码异味的强烈指标,例如意外使用非标准功能或调用定义不明确的行为。 -
是的,这是一个巨大的项目,我没有编程......
-
如果这是一个庞大的项目并且更改编译器选项不可行,只需按照 C90 标准编写代码即可。
-
您应该能够使用您想要的任何编译器标志为您的文件添加特定的 make 规则。你如何做到这一点将取决于 Makefile。
-
如果项目使用automake,见gnu.org/software/automake/manual/html_node/…