• C 如何判断编译器是否支持C90 C99?


    参考:《C Primer Plus》,Stephen Prata著,姜佑译。

    ANSI/ISO C标准

    美国ANSI成立委员会X3J11,于89/90年,99年,11年,发布C标准:C89/C90,C99,C11。

    ANSI/ISO 各版本C标准
    C标准 描述
    经典C 也称K&R C,87年K&R著作《C语言程序设计》,成为C指导标准
    C89/C90

    89年ANSI C,90年ISO C,定义了C语言和C标准库。X3J11开发,同一套标准,发布名称/机构不同。

    用意:作为实现,应该针对目标计算机定义适合特定操作,而不是强加一个抽象、统一的定义。

    特点:

    1.信任程序员;

    2.不妨碍程序员做任何事;

    3.语言简单精炼;

    4.只提供一种方法执行一项操作;

    5.不为程序可移植性牺牲效率。

    C99

    C9X委员会修订,遵循C90原则。

    新特性:

    1.支持国际化编程;

    2.调整现有实践致力于解决明显的缺陷;

    3.为适应科学和工程项目中关键数值计算,提高C适应性;

    C11

    特点:

    1.不强调信任程序员;

    2.不要求服务小型机市场供应商支持目标环境用不到的特性;

    C语言标准众多,要如何判断编译器所支持的标准版本?

    一个简单的方法是,依据不同版本标准所支持的数据类型关键字来判别,如下表所示:

    C语言数据类型关键字
    K&R给出的关键字(87 经典C) C90添加关键字 C99添加关键字
    int signed _Bool
    long void _Complex
    short   _Imaginary
    unsigned    
    char    
    float    
    double    

    那么,可以在C程序中,定义相应类型,然后build是否支持来判断。

    下面在Ubuntu OS下以为例,进行测试。

    GCC版本=4.8.4

    测试代码: 

    //C99.c
    #include <stdio.h>
    #include <stdint.h>
    
    int main(void)
    {
        // C90
        signed int a = -10;
        printf("a=%d
    ", a);
    
        // C99
        _Bool b = 1;
         if (b)
         {
             printf("b is true.
    ");
         }
         else{
             printf("b is false
    ");
         }
         
        return 0;
    }

     运行结果表明编译器支持C99:

  • 相关阅读:
    Python+VSCode IDE 快速开发配置 #VSCode上配置Jupyter Notebook
    GUI Design Studio 简单通讯本设计原型 1
    GUI Design Studio 简单通讯本设计原型 2
    安装Lua For Windows
    Lua – Hello World!
    GUI Design Studio 功能面板介绍
    中文字符级转换
    Base64传输字节码转换
    这怎么是英文的?
    error? in CLR via c#
  • 原文地址:https://www.cnblogs.com/fortunely/p/9490979.html
Copyright © 2020-2023  润新知