4

就像标题说的那样,我需要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

4

8 回答 8

5

由于 GCC 5.x 版本-std=gnu11默认运行, Code::Blocks 必须对编译器做一些事情(例如传递-ansior -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=c11or -std=gnu11

于 2015-12-08T18:40:14.903 回答
3

假设适用于 Windows 的 Codeblocks 13.12,它带有不支持 C11 的旧版本 GCC (4.7.1)。

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

我只是一个学习者(初学者 - 非常新),但我希望这可能会有所帮助(尽管线程很旧)。

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

code_blocks_16.01

我创建了新标志

Settings -> Compiler -> (under general)右击general -> New Flag -> Enter details from image -> Ok 之后勾选刚刚创建的新标志的复选框。(为我工作)

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

(顺便说一句,我使用的 code::blocks 16.01 mingw 32bit 的 gcc 版本是 4.9.2)

于 2016-12-15T08:10:23.897 回答
2

转到设置-> 编译器-> 编译器标志-> 常规-> 勾选“让 g++ 遵循 c++11 ISO”旁边的框完成!!!

于 2017-09-27T04:54:04.213 回答
0

我在我的 CodeBlock 项目中也遇到了同样的问题。我正在使用版本 CodeBlock 版本:17.12。

我通过以下步骤进行了修复:

  1. 转到设置 -> 编译器选项卡。
  2. “全局编译器设置:”pop is openend。
  3. 检查选定的编译器:“GNU GCC 编译器”
  4. 选择“编译器标志”选项卡。
  5. 选中以下复选框:
    • 让 g++ 遵循 C++11 ISO C++ 语言标准
    • 让 gcc 遵循 2011 ISO C 语言标准
  6. 保存设置。
  7. 现在我可以编译 C++11 代码了。

希望它也适用于你们。

于 2019-01-20T03:08:35.137 回答
0

转到设置 -> 编译器设置

确保选择左侧选项卡上的全局编译器设置。

在此处输入图像描述

在右侧选项卡上,单击编译器设置选项卡。一般来说,勾选“让 gcc 遵循 1999 ISO C 语言标准 [-std=c99]

在此处输入图像描述

于 2019-02-27T10:32:04.900 回答
-2

原因是因为您在 for 循环中声明 i 。尝试像下面这样分离它:

#include<stdio.h>

    int main(void)

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

            return 0;
        }

它会起作用的。快乐编码:)

于 2016-08-11T12:59:35.363 回答
-2

转到“设置”->“编译器”,然后查看“c++11 ISO inc 编译器”设置选项卡后面的选项。

在此处输入图像描述

于 2016-11-25T09:11:41.780 回答