code::blocks
支持C11
,但我不知道该怎么做。我进入了
设置
=> 编译器设置
=> 其他选项
,并添加了-std=c11
,也尝试了-std=gnu11
,但两者都似乎没有起作用。我编译了
gcc-5.2
,然后更改了默认编译器(gcc-4.9),但仍然没有结果。
当我尝试编译以下程序时:
#include<stdio.h>
int main(void){
int arr[] = {0,1,2,3,4};
for(int i=0;i<5;i++){
printf("%d ",arr[i]);
}
return 0;
}
我得到了以下内容:
|6|error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode|
但是,如果我在终端中执行(Ubuntu 15.04,64位,GCC-5.2):
./install/gcc-5.2.0/bin/gcc5.2 program.c -o program
看起来运行良好。
我的问题是,如何让code::blocks
与c11
一起工作?
-std=gnu11
运行,Code::Blocks必须执行某些操作(例如传递-ansi
或-std=gnu90
)来使编译器以不同的方式工作。调查所有发送到编译器的选项。找到一种方法让Code::Blocks 显示编译时使用的确切命令。然后解决问题。(我没有使用过Code::Blocks,所以我无法提供更多帮助,假设这有任何帮助)。 - Jonathan Leffler-Wall -Wextra -Werror -Wstrict-prototypes -Wconversion -std=gnu11 -O0 -g -ansi
pkg-config --cflags gtk+-3.0
- Michi-ansi
是罪魁祸首;它相当于-std=c90
或者-std=gnu90
— 它明确地撤销了-std=c11
或-std=gnu11
。另外,你可以在注释的代码块中使用两个反引号开头和结尾以及一个在中间来嵌入反引号:-Wall … `pkg-config --cflags gtk+-3.0`
— 就像这样。 - Jonathan Leffler-ansi
就是问题所在。我原本以为我也需要这个选项,但其实不用。 - Michi