首页 > 编程语言 >让Devc++使用c11标准

让Devc++使用c11标准

时间:2023-10-22 18:22:33浏览次数:42  
标签:std int Dev C语言 标准 c++ printf c11 C11

默认情况下,C语言编译器gcc4.7.2不符合任何ANSI /ISO C标准。当前默认值等效于-std=gnu90,这是1989/1990标准,扩展名为GNU-specific。 

 如果要实现标准一致性,比如c89,c90,c99或c11,可以使用以下任意一种:

-std=c90 -pedantic

-std=c99 -pedantic

-std=c11 -pedantic

-std=c90也可以拼写为-ansi,-std=c89或-std=iso9899:1990。

-std=iso9899:199409支持C90

 

DevC++5.0开发工具配置C99标准C的方法如下:(输入以上某个标准对应的命令即可)

 

  以下是测试各个标准的测试代码。

一、C89(C90)

C89(也称为C90)是C语言的最早版本的标准,于1989年发布。它定义了C语言的基本语法、关键字和数据类型,并引入了标准库函数,如stdio.h和stdlib.h等。C89的特点是简洁、可移植且易于理解,被广泛应用于各种计算机平台。

举例来说,下面的代码展示了使用C89标准编写的程序示例:

#include <stdio.h>

int main() {
    printf("Hello, C89!\n");

    return 0;
}

  

在这个示例中,我们使用了C89标准的头文件 <stdio.h> 和函数 printf 来输出一条信息。

二、C99

C99标准于1999年发布,对C语言进行了扩展和改进。它引入了一些新特性,如变长数组、复合字面量、单行注释等。C99还提供了更灵活的变量声明和初始化方式,允许在代码中声明变量的同时进行初始化。

举例来说,下面的代码展示了使用C99标准引入的变长数组和复合字面量的示例:

#include <stdio.h>

int main() {
    int n = 5;
    int arr[n]; // 变长数组

    for (int i = 0; i < n; i++) {
        arr[i] = i + 1;
    }

    printf("Array: { ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("}\n");

    return 0;
}

 

在这个示例中,我们使用了C99标准引入的变长数组来定义数组 arr,其大小由变量 n 决定。同时,我们使用了复合字面量来在一行代码中初始化数组的元素。

三、C11

C11标准于2011年发布,是对C语言的又一次改进和扩展。它引入了一些新特性,如匿名结构体、泛型选择表达式、多线程支持等。C11还对一些现有特性进行了细微的改进和修正,提高了语言的表达能力和可靠性。

举例来说,下面的代码展示了使用C11标准引入的匿名结构体和泛型选择表达式的示例:

#include <stdio.h>

int main() {
    struct {
        int x;
        int y;
    } point = { .x = 5, .y = 10 }; // 匿名结构体

    _Generic(point, 
             struct { int x; int y; }: printf("Point: (%d, %d)\n", point.x, point.y),
             default: printf("Invalid data type!\n")); // 泛型选择表达式

    return 0;
}

 

在这个示例中,我们使用了C11标准引入的匿名结构体来定义结构体变量 point,并使用了泛型选择表达式 _Generic 来根据变量的类型选择不同的操作。

四、C17

C17标准于2018年发布,是C语言的最新版本。C17主要是对C11标准的修订和更新,旨在进一步改进语言的特性和可用性。C17引入了一些新特性,如初始化宏、属性和线程局部存储等。

总结:

C语言的四套标准(C89、C99、C11和C17)代表了C语言的演进和改进过程。每个标准引入了新特性和改进,为程序员提供了更强大和灵活的编程工具。通过具体实例的说明,我们深入探讨了每个标准的特点和新特性,帮助你了解C语言的不同版本,并为你在实际编程中选择合适的标准提供了指导。

 

   

标签:std,int,Dev,C语言,标准,c++,printf,c11,C11
From: https://www.cnblogs.com/halesir88/p/17780787.html

相关文章

  • Modern C++ Overview综览
    ##PartI:Language(第一篇:语言)-大局观——简直像个新语言给出一个完整实例,展示(几乎)所有新特性的样貌,让学员从真实代码中一次性窥得(几乎)全豹,得知即将面对的新知和挑战。-auto,typededuction型别/型态推导是ModernC++至关重要的某种基础;这一节为后头诸多特性打好基础。-......
  • 挑战用很多种方法解决A+B(c++)
    写在前面的本文章主要是博主自己想写。水篇文章。正常作法#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta,b; cin>>a>>b; cout<<a+b; return0;}数组#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta[3]; cin>>a[1]>......
  • C++零基础教程(引用)
    (文章目录)前言本篇文章我们来讲解C++中非常重要的一个概念,这个概念就是引用,引用在C++中经常使用,下面就让我们来看看到底什么是引用吧。一、引用概念介绍及使用方法在C++中,引用是一种别名,它允许我们使用一个已经存在的对象来创建一个新的名称。引用提供了一种更直观、简洁和安......
  • C++中的RTTI机制、多继承中的虚函数
    C++中的RTTI机制基类有虚函数时才能实现RTTI机制:基类无虚函数时,typeid(*pA)返回的是pA声明时的类型。基类有虚函数时,typeid(*pA)返回的是pA指向对象的类型。比较两个带有虚函数的类的对象是否相等if(typeid(*a)==typeid(B))if(dynamic_cast<B*>(a)):如果能够成功向......
  • C++ 读写锁
    官网:https://zh.cppreference.com/w/cpp/thread/shared_mutex1.何为读写锁相比互斥锁,读写锁允许更高的并行性,互斥量要么锁住状态要么不加锁,而且一次只有一个线程可以加锁。读写锁可以有三种状态:读模式加锁状态;写模式加锁状态;不加锁状态;只有一个线程可以占有写模式的读写......
  • C++中的继承
    一、继承的概念与定义1、继承的概念继承机制是面向对象程序设计实现代码复用的重要手段,它允许程序员在保持原有类特性的基础上进行拓展,增加功能,我们把原本的类称之为父类或者基类,新产生的类称之为子类或者派生类。继承体现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过......
  • vs 禁用c++编译警告提示的两种方式
    1.禁用单个cpp文件编译警告#pragmawarning(disable:警告号)如:当前提示C4305警告;加入禁用单个cpp文件编译警告;结果:编译警告消失.2.全局禁用指定警告效果如下 翻译搜索复制......
  • C++变量类型
    C++变量类型变量的名称可以由字母、数字和下划线组成。它必须以字母或下划线开头。类型描述bool布尔类型,存储值为true或false,占用1个字节char字符类型,用于存储ASCII字符,通常占用1个字节int整数类型,通常用于存储普通整数,通常占用四个字节float单精度浮点值......
  • C/C++ C2679 二元“<<”: 没有找到接受“XXX”类型的右操作数的运算符(或没有可接受的
    今天在做一个C++项目时遇到了如下问题: 找了好久的百度,结果发现只要把这段报错的程序换一下位置,放到运算符重载函数的下面就可以了,因为编译器是按顺序执行的。。。 ......
  • c++指针相关
    常量指针(PointertoConstant)定义:一个指向常量的指针。这意味着指针指向的值不能被修改,但指针本身可以被修改,即可以重新指向其他地址。声明:constType*pointerName;constint*p1;intx=10,y=20;p1=&x;//Valid*p1=50;//Errorp1=&y;//Valid指针......