C 如何判断编译器是否支持C90 C99?
参考:《C Primer Plus》,Stephen Prata著,姜佑译。
ANSI/ISO C标准
美国ANSI成立委员会X3J11,于89/90年,99年,11年,发布C标准:C89/C90,C99,C11。
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语言标准众多,要如何判断编译器所支持的标准版本?
一个简单的方法是,依据不同版本标准所支持的数据类型关键字来判别,如下表所示:
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?相关推荐
- cmake:通过CMAKE_CXX_COMPILE_FEATURES判断编译器是否支持C++11
以前在cmake中要判断一个编译器是否支持C++11挺麻烦的,要根据编译器的类型和版本来判断. 从cmake 3.1版本开始增加了一个CMAKE_CXX_COMPILE_FEATURES变量用于获取当 ...
- C++核心准则T.48:如果你的编译器不支持concepts,使用enable_if模仿它
T.48: If your compiler does not support concepts, fake them with enable_if T.48:如果你的编译器不支持concepts,使 ...
- 判断无线网卡是否支持5GHz频段
判断无线网卡是否支持5GHz频段 目前,无线WiFi网络支持2.4GHz和5GHz两个频段.大学霸IT达人其中,5GHz传输速率更高,逐步会成为主流.如果要使用或渗透5GHz网络,则无线网卡也需要支持 ...
- JS判断浏览器是否支持某一个CSS3属性
1.引子 css3的出现让浏览器的表现更加的丰富多彩,表现冲击最大的就是动画了,在日常书写动画的时候,很有必要去事先判断浏览器是否支持,尤其是在写CSS3动画库的时候.比如transition的ani ...
- 中国首个芯片大学最快于本月底在南京挂牌;华为方舟编译器正式支持 C 语言;Ora2Pg v21.0 发布|极客头条
整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 国内 ...
- 判断手机是否支持google play服务
android开发报错 Unable to get provider com.google.firebase.provider.FirebaseInitProvider,classnotfound 或 ...
- 完全开源!华为方舟编译器正式支持C语言了,并开放鸿蒙教程!
点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来自:http://www.kkj.cn/ 2019年8月底,华为方舟编译器(OpenAr ...
- java判断手机application/xhtml+xml_判断浏览器是否支持wml
/*判断浏览器是否支持wml 通过 Request.ServerVariables("HTTP_USER_AGENT")来获得,一般包含:CECT,Compal,CTL,LG,NE ...
- 如何判断无线网卡是否支持5GHz频段【两种方法】
现在的无线网络速度是蹭蹭的上升,无线路由器也越来越多的加入了5GHz频段的支持,一个巴掌拍不响,光是无线路由器支持5GHz频段,如果无线网卡不支持,也只是白白浪费了这么高的频段.如何判断无线网卡是否支 ...
最新文章
- 百度一口气亮出NLP十年积累:完整技术布局全面披露,面向业界砸下11项七夕大礼...
- ASP.NET中App_Code,App_Data等文件夹的作用
- 2010 模板下载 罗斯文_俄罗斯人过年必看电影 | 新年枞树 @鱼子酱字幕组
- 解读Windows更新下载器文件列表(推荐)
- fitbit手表中文说明书_使用机器学习预测Fitbit睡眠分数
- php 正则匹配unicode,PHP中正则表达式对UNICODE字符码的匹配方法
- Access is denied
- 小白学深度之RNN循环神经网络
- BZOJ1050 [HAOI2006]旅行comf
- Java设计模式学习总结(9)——结构型模式之过滤器模式(标准模式)
- NSObject的hash方法
- Java基础15 Java常用类
- [译] 人人都是设计师。我们可以的
- 变上限积分求导公式(通用公式)
- mysql8.0.15下载后怎么打开_mysql8.0.15下载安装详细教程新手必备!
- 【NOI2015】BZOJ4199品酒大会题解(SAM+树形DP)
- 燕东微在科创板上市:市值263亿元,北京电控、亦庄国投等为股东
- pcb元器件通孔焊盘激光焊锡的优势
- 公司上市有几种方式?
- android全景设置高度,Android全景SDK | 百度地图API SDK
热门文章
- 用户在控制台输入0-6,判断是星期几。例如:输入0,输出星期一;输入1,输出星期二,其余依次类推。
- 【报错】route config “component“ for path: /test cannot be a string id. Use an actual component instead.
- java web 获取 mac 地址_java web根据访问的ip地址获取MAC地址
- 什么事自动驾驶?亚马逊的玩具告诉你
- 汇编中偏移地址的理解
- 前端里的button怎么去除点击自带边框_这款系统自带的视频剪辑软件,了解一下...
- 计算机对等网络,什么是对等网络p2p?
- WPS:如何插入连续的参考文献,例如[1-6]
- 什么是你的核心竞争力之四--人格力量
- 【原创】三菱QD77MS16控制伺服电机的方法