如何在Code :: Blocks中使用C11标准

就像标题所说我需要使用code::blocks来使用C11 ,我无法弄清楚如何做到这一点。

我去settings => compiler settings => Other options ,我添加了-std=c11并尝试使用-std=gnu11 ,两者似乎都不起作用。

我编译了gcc-5.2然后我更改了默认编译器(gcc-4.9)但仍然没有结果。


当我尝试编译以下程序时:

 #include 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::blocksc11

由于GCC 5.x版本默认使用-std=gnu11运行,因此Code :: Blocks必须执行某些操作(例如将-ansi-std=gnu90传递给编译器)以使其以不同方式工作。

调查发送到编译器的所有选项。 找到一种方法让Code :: Blocks显示它在编译时使用的确切咒语。 然后找出解决方法。

使用的选项是:

 -Wall -Wextra -Werror -Wstrict-prototypes -Wconversion -std=gnu11 \ -O0 -g -ansi `pkg-config --cflags gtk+-3.0` 

-ansi正在造成伤害; 它相当于-std=c90或者-std=gnu90 – 它明确地撤消-std=c11-std=gnu11

我只是一个学习者(初学者 – 非常新)但我希望这可能会有所帮助(尽管线程已经老了)。

(图像中可见的代码是示例12.2 – 来自Stephen Prata C Primer Plus的forc99.c)

code_blocks_16.01

我创造了新的旗帜

设置 – >编译器 – >(一般情况下)右键单击常规 – >新标志 – >从图像输入详细信息 – >确定之后选中刚刚创建的新标志的框。 (为我工作)

[如果您查看图像中有-std = c99选项(就在我创建的选项上方),您可以使用该选项进行c99支持。]

(顺便说一下gcc版本代码::块16.01 mingw 32bit,我用这个,是4.9.2)

假设Windows的Codeblocks 13.12,它附带了一个不支持C11的旧版GCC(4.7.1)。

  • 手动下载最新版本的Mingw 64编译器(我不认为Mingw32可以包含GCC版本的C11)。
  • 安装它。 它最终将出现在一些模糊的文件夹中,如C:\Program Files\mingw-w64\x86_64-4.9.1-win32-seh-rt_v3-rev1\mingw64
  • 在Codeblocks,Settings – > Compiler – > Toolchain executables选项卡 – > Compiler的安装目录中添加上述路径。 单击“自动检测”按钮。
  • 在同一选项卡中,检查C编译器是否为x86_64-w64-mingw32-gcc.exe (因为您现在可能在计算机上安装了多个GCC)并且make程序是mingw32-make.exe
  • 在选项卡编译器设置中,右键单击编译器标志列表并选择“新标志”。 对于C11中的“name”类型,对于编译器标志,请键入-std=c11 。 单击确定并检查刚刚创建的新C11选项。
  • 另外,为确保C11一致性,请选中“将错误视为ISO C所要求的警告……”(-pedantic-errors)。 选中“启用所有常见编译器警告”选项(-Wall)。

转到设置 – >编译器 – >编译器标志 – >常规 – >勾选“让g ++跟随c ++ 11 ISO”旁边的框!

原因是因为你声明我在循环中。 尝试将其分开如下:

 #include int main(void) { int arr[] = {0,1,2,3,4}; int i; for(i=0;i<5;i++){ printf("%d ",arr[i]); } return 0; } 

它会工作。 快乐编码:)

转到“设置” – >“编译器”,然后看到选项“c ++ 11 ISO inc compiler”设置选项卡。

在此处输入图像描述