【发布时间】:2015-12-08 18:27:56
【问题描述】:
正如标题所说,我需要让code::blocks 与C11 一起工作,但我不知道该怎么做。
我去了settings => compiler settings => Other options 并添加了-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、64BIT、gcc-5.2):
./install/gcc-5.2.0/bin/gcc5.2 program.c -o program
似乎工作正常。
我的问题是,如何让code::blocks 与c11 一起工作?
【问题讨论】:
-
由于 GCC 5.x 版本默认使用
-std=gnu11运行,Code::Blocks 必须做一些事情(例如将-ansi或-std=gnu90)传递给编译器以使其工作不同。调查发送给编译器的所有选项。找到一种方法让 Code::Blocks 向您显示它在编译时使用的确切咒语。然后想办法解决。 (我没有使用过 Code::Blocks,所以我没有比这更有帮助的了——假设这有任何帮助。) -
@JonathanLeffler 这是使用的选项 =>>
-Wall -Wextra -Werror -Wstrict-prototypes -Wconversion -std=gnu11 -O0 -g -ansipkg-config --cflags gtk+-3.0 -
-ansi正在造成损害;它等价于-std=c90或-std=gnu90——它显式撤消了-std=c11或-std=gnu11。 (而且,仅供参考,您可以在注释的代码块中嵌入反引号,方法是使用两个开始和结束以及一个在中间:-Wall … `pkg-config --cflags gtk+-3.0`— 就像那样。 -
@JonathanLeffler 谢谢你,没错,
-ansi是问题所在。我虽然我也需要那个选项,我的意思是-ansi
标签: c codeblocks c11 gcc5.2