参考:《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)
{// C90signed int a = -10;printf("a=%d\n", a);// C99_Bool b = 1;if (b){printf("b is true.\n");}else{printf("b is false\n");}return 0;
}

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

转载于:https://www.cnblogs.com/fortunely/p/9490979.html

C 如何判断编译器是否支持C90 C99?相关推荐

  1. cmake:通过CMAKE_CXX_COMPILE_FEATURES判断编译器是否支持C++11

    以前在cmake中要判断一个编译器是否支持C++11挺麻烦的,要根据编译器的类型和版本来判断. 从cmake 3.1版本开始增加了一个CMAKE_CXX_COMPILE_FEATURES变量用于获取当 ...

  2. C++核心准则T.48:如果你的编译器不支持concepts,使用enable_if模仿它

    T.48: If your compiler does not support concepts, fake them with enable_if T.48:如果你的编译器不支持concepts,使 ...

  3. 判断无线网卡是否支持5GHz频段

    判断无线网卡是否支持5GHz频段 目前,无线WiFi网络支持2.4GHz和5GHz两个频段.大学霸IT达人其中,5GHz传输速率更高,逐步会成为主流.如果要使用或渗透5GHz网络,则无线网卡也需要支持 ...

  4. JS判断浏览器是否支持某一个CSS3属性

    1.引子 css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的ani ...

  5. 中国首个芯片大学最快于本月底在南京挂牌;​华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...

  6. 判断手机是否支持google play服务

    android开发报错 Unable to get provider com.google.firebase.provider.FirebaseInitProvider,classnotfound 或 ...

  7. 完全开源!华为方舟编译器正式支持C语言了,并开放鸿蒙教程!

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来自:http://www.kkj.cn/ 2019年8月底,华为方舟编译器(OpenAr ...

  8. java判断手机application/xhtml+xml_判断浏览器是否支持wml

    /*判断浏览器是否支持wml 通过 Request.ServerVariables("HTTP_USER_AGENT")来获得,一般包含:CECT,Compal,CTL,LG,NE ...

  9. 如何判断无线网卡是否支持5GHz频段【两种方法】

    现在的无线网络速度是蹭蹭的上升,无线路由器也越来越多的加入了5GHz频段的支持,一个巴掌拍不响,光是无线路由器支持5GHz频段,如果无线网卡不支持,也只是白白浪费了这么高的频段.如何判断无线网卡是否支 ...

最新文章

  1. 百度一口气亮出NLP十年积累:完整技术布局全面披露,面向业界砸下11项七夕大礼...
  2. ASP.NET中App_Code,App_Data等文件夹的作用
  3. 2010 模板下载 罗斯文_俄罗斯人过年必看电影 | 新年枞树 @鱼子酱字幕组
  4. 解读Windows更新下载器文件列表(推荐)
  5. fitbit手表中文说明书_使用机器学习预测Fitbit睡眠分数
  6. php 正则匹配unicode,PHP中正则表达式对UNICODE字符码的匹配方法
  7. Access is denied
  8. 小白学深度之RNN循环神经网络
  9. BZOJ1050 [HAOI2006]旅行comf
  10. Java设计模式学习总结(9)——结构型模式之过滤器模式(标准模式)
  11. NSObject的hash方法
  12. Java基础15 Java常用类
  13. [译] 人人都是设计师。我们可以的
  14. 变上限积分求导公式(通用公式)
  15. mysql8.0.15下载后怎么打开_mysql8.0.15下载安装详细教程新手必备!
  16. 【NOI2015】BZOJ4199品酒大会题解(SAM+树形DP)
  17. 燕东微在科创板上市:市值263亿元,北京电控、亦庄国投等为股东
  18. pcb元器件通孔焊盘激光焊锡的优势
  19. 公司上市有几种方式?
  20. android全景设置高度,Android全景SDK | 百度地图API SDK

热门文章

  1. 用户在控制台输入0-6,判断是星期几。例如:输入0,输出星期一;输入1,输出星期二,其余依次类推。
  2. 【报错】route config “component“ for path: /test cannot be a string id. Use an actual component instead.
  3. java web 获取 mac 地址_java web根据访问的ip地址获取MAC地址
  4. 什么事自动驾驶?亚马逊的玩具告诉你
  5. 汇编中偏移地址的理解
  6. 前端里的button怎么去除点击自带边框_这款系统自带的视频剪辑软件,了解一下...
  7. 计算机对等网络,什么是对等网络p2p?
  8. WPS:如何插入连续的参考文献,例如[1-6]
  9. 什么是你的核心竞争力之四--人格力量
  10. 【原创】三菱QD77MS16控制伺服电机的方法