C - 使用 -std=c11 标志编译部分代码



是否有可能使用不同的标志编译代码的一部分 -而不更改makefile中的标志?

我有一个现有的项目,它没有为 -std=c11 设置。现在我已经添加了自己的代码,编译器告诉我类似

'for' loop initial declarations are only allowed in C99 or C11 mode

当我将标志更改为 std=c11 或 c99 时,程序的其余部分将不再编译。

是否有类似C++extern "C" {}告诉编译器将以下部分视为 std=c11 的东西?

谢谢

据我所知,您无法在本地设置编译器选项。但是,您可以使用诊断杂注在本地禁用虚假警告。

但是,执行此操作的最佳方法可能是将 C99/C11 代码隔离在单独的 .c 文件中,在将它们与项目的其余部分分开编译之前,然后再将它们链接在一起。

我认为没有编译指示在本地强制-std=c99/-std=c11(即使您可以对其他一些选项执行等效操作,例如,对于-On选项(,但是即使在 C90 中,您几乎也可以有一个 for-loop-local 初始化声明,而不会有太多的语法中断。只需将 for 循环括在大括号中,并将声明放在其中:{ int i=0; for(;i<5;i++){ something(); } }

最新更新