是否有可能编译具有不同标志的代码的一部分--,而不需要更改makefile中的标志?
我有一个现有的项目,不是为-std=c11设置的。现在我添加了自己的代码,编译器告诉我如下
'for' loop initial declarations are only allowed in C99 or C11 mode
当我将标志更改为std=c11或c99时,程序的其余部分将不再编译。
是否有类似于extern "C" {}的C++命令编译器将下面的部分作为std=c11处理?
谢谢
发布于 2018-08-14 08:54:22
据我所知,您不能在本地设置编译器选项。但是,您可以使用诊断语用在本地禁用虚假警告。
但是,最好的方法可能是将C99/C11代码分离到单独的.c文件中,然后将这些代码与项目的其余部分分别编译,然后将它们链接到一起。
发布于 2018-08-14 09:24:22
我不认为在本地强制使用-std=c99/-std=c11 (即使您可以对其他一些选项(例如,-On选项)执行等效的操作),但是即使在C90中,您也可以有一个for -循环-局部初始化声明,而不会造成很多语法中断。只需将for循环封装在大括号中,并将声明放在那里:{ int i=0; for(;i<5;i++){ something(); } }
https://stackoverflow.com/questions/51837327
复制相似问题