c89/c90、c99和c11的区别
时间: 2023-06-05 15:48:09 浏览: 1956
C89/C90、C99和C11是不同版本的C语言标准。
C89/C90(ANSI C)是1989年颁布的标准,是C语言的第一个国际标准。它在语法和库方面的改进不多。
C99是1999年颁布的标准,与C89/C90相比,它增加了许多新特性,如可变长数组、指向函数的指针、内嵌式文档、新的数学函数库等。
C11是2011年颁布的标准,它对C99的一些特性进行了改进,并增加了一些新特性,如线程安全函数、动态内存分配的安全性增强、对Unicode字符的支持等。
总的来说,C11是C语言的最新版本,在语法和库方面都有很大的改进。
相关问题
6 5 C:\Users\Iflytek\AppData\Local\Temp\Rar$DIa4224.43801\实验代码.c [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
这条错误信息是编译器在编译C语言代码时输出的,指出在代码中存在一个不符合标准C语言(特别是C89/C90标准)的语法使用。错误信息中提到的 "[Error] 'for' loop initial declarations are only allowed in C99 or C11 mode" 表示编译器工作在C89/C90模式下,而在这两种模式下,C语言规定在for循环的初始化部分不允许声明变量。但是从C99标准开始,允许在for循环的初始化部分声明变量。
这个错误通常发生在当代码在支持C99或更新的标准的编译器上被编译时,而编译器被设置为只接受C89/C90标准。举个例子,假设有一个C99的代码段如下:
```c
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
return 0;
}
```
如果这段代码在被设置为C89/C90标准的编译器上编译,将会产生上述的错误。
为了修正这个问题,可以将变量的声明移到for循环外部,如下:
```c
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("%d\n", i);
}
return 0;
}
```
或者,如果想要保持变量在循环内的声明,可以将编译器设置为支持C99或C11标准。
dev c++怎么修改为C99模式或C11模式?
Dev-C++ 是一个基于 MinGW(Minimalist GNU for Windows)的集成开发环境(IDE),默认使用的是较旧的 C90 标准。要在 Dev-C++ 中切换到 C99 或 C11 模式,可以按照以下步骤操作:
1. 打开 Dev-C++ IDE。
2. 在菜单栏上选择 "Tools"(工具)-> "Compiler Options"(编译器选项)。
3. 在弹出的对话框中,选择 "Settings"(设置)选项卡。
4. 在 "Version"(版本)下拉菜单中,选择 "C99" 或 "C11"。
5. 点击 "OK"(确定)保存更改。
这样,Dev-C++ 将会使用相应的 C99 或 C11 标准进行编译。
请注意,Dev-C++ 是一个相对较旧的开发环境,并且不再得到官方支持。推荐使用更现代的 IDE(如 Code::Blocks、Visual Studio、CLion 等)来获得更好的开发体验和支持最新的 C 标准。
阅读全文