如何在 Code::Blocks 中使用 C11 标准
How to use C11 standard in Code::Blocks
正如标题所说,我需要让 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 向您展示它在编译时使用的确切咒语。然后想办法解决它。
Options that are used are:
-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
.
假设 Codeblocks 13.12 用于 Windows,它附带不支持 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's installation directory 添加以上路径。单击 "auto detect" 按钮。
- 在同一选项卡中,检查 C 编译器是否为
x86_64-w64-mingw32-gcc.exe
(因为您现在可能在计算机上安装了多个 GCC)并且 make 程序为 mingw32-make.exe
.
- 在选项卡编译器设置中,右键单击编译器标志列表和 select "New flag"。对于 C11 中的 "name" 类型,对于编译器标志类型
-std=c11
。单击确定并检查刚刚创建的新 C11 选项。
- 还要确保 C11 一致性,请检查选项 "treat errors as the warnings demanded by ISO C..." (-pedantic-errors)。检查选项 "Enable all common compiler warnings" (-Wall).
原因是因为你在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;
}
它会起作用的。编码愉快:)
转到 "setting" -> "compiler",然后查看 "c++11 ISO inc compiler" 设置选项卡后面的选项。
我只是一个学习者(初学者 - 非常新)但我希望这可能有所帮助(尽管线程很旧)。
(图中可见的代码是示例 12.2 -- forc99.c 来自 Stephen Prata C Primer Plus)
我创建了新标志
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)
转到“设置”->“编译器”->“编译器标志”->“常规”->勾选“让 g++ 遵循 c++11 ISO”旁边的框
完成!!!
我在我的 CodeBlock 项目中也遇到了同样的问题。
我正在使用版本 CodeBlock Version:17.12.
我通过以下步骤修复:
- 转到设置 -> Comppiler 选项卡。
- "Global Compiler Settings:" pop 是开放式的。
- 检查 Selected 编译器:“GNU GCC 编译器”
- Select "Compiler Flag" 选项卡
- Select 以下复选框:
- 让 g++ 遵循 C++11 ISO C++ 语言标准
- 让 gcc 遵循 2011 ISO C 语言标准
- 保存设置。
- 现在我可以编译 C++11 代码了。
希望它也对你们有用。
转到设置 -> 编译器设置
确保选中左侧选项卡上的全局编译器设置。
在右侧选项卡上,单击“编译器设置”选项卡。在一般情况下,选中“让 gcc 遵循 1999 ISO C 语言标准 [-std=c99]
”复选框
正如标题所说,我需要让 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 向您展示它在编译时使用的确切咒语。然后想办法解决它。
Options that are used are:
-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
.
假设 Codeblocks 13.12 用于 Windows,它附带不支持 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's installation directory 添加以上路径。单击 "auto detect" 按钮。
- 在同一选项卡中,检查 C 编译器是否为
x86_64-w64-mingw32-gcc.exe
(因为您现在可能在计算机上安装了多个 GCC)并且 make 程序为mingw32-make.exe
. - 在选项卡编译器设置中,右键单击编译器标志列表和 select "New flag"。对于 C11 中的 "name" 类型,对于编译器标志类型
-std=c11
。单击确定并检查刚刚创建的新 C11 选项。 - 还要确保 C11 一致性,请检查选项 "treat errors as the warnings demanded by ISO C..." (-pedantic-errors)。检查选项 "Enable all common compiler warnings" (-Wall).
原因是因为你在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;
}
它会起作用的。编码愉快:)
转到 "setting" -> "compiler",然后查看 "c++11 ISO inc compiler" 设置选项卡后面的选项。
我只是一个学习者(初学者 - 非常新)但我希望这可能有所帮助(尽管线程很旧)。
(图中可见的代码是示例 12.2 -- forc99.c 来自 Stephen Prata C Primer Plus)
我创建了新标志
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)
转到“设置”->“编译器”->“编译器标志”->“常规”->勾选“让 g++ 遵循 c++11 ISO”旁边的框 完成!!!
我在我的 CodeBlock 项目中也遇到了同样的问题。 我正在使用版本 CodeBlock Version:17.12.
我通过以下步骤修复:
- 转到设置 -> Comppiler 选项卡。
- "Global Compiler Settings:" pop 是开放式的。
- 检查 Selected 编译器:“GNU GCC 编译器”
- Select "Compiler Flag" 选项卡
- Select 以下复选框:
- 让 g++ 遵循 C++11 ISO C++ 语言标准
- 让 gcc 遵循 2011 ISO C 语言标准
- 保存设置。
- 现在我可以编译 C++11 代码了。
希望它也对你们有用。
转到设置 -> 编译器设置
在右侧选项卡上,单击“编译器设置”选项卡。在一般情况下,选中“让 gcc 遵循 1999 ISO C 语言标准 [-std=c99]
”复选框