C 如何判断编译器是否支持C90 C99?
參考:《C Primer Plus》,Stephen Prata著,姜佑譯。
ANSI/ISO C標(biāo)準(zhǔn)
美國ANSI成立委員會X3J11,于89/90年,99年,11年,發(fā)布C標(biāo)準(zhǔn):C89/C90,C99,C11。
| C標(biāo)準(zhǔn) | 描述 |
| 經(jīng)典C | 也稱K&R C,87年K&R著作《C語言程序設(shè)計》,成為C指導(dǎo)標(biāo)準(zhǔn) |
| C89/C90 |
89年ANSI C,90年ISO C,定義了C語言和C標(biāo)準(zhǔn)庫。X3J11開發(fā),同一套標(biāo)準(zhǔn),發(fā)布名稱/機構(gòu)不同。 用意:作為實現(xiàn),應(yīng)該針對目標(biāo)計算機定義適合特定操作,而不是強加一個抽象、統(tǒng)一的定義。 特點: 1.信任程序員; 2.不妨礙程序員做任何事; 3.語言簡單精煉; 4.只提供一種方法執(zhí)行一項操作; 5.不為程序可移植性犧牲效率。 |
| C99 |
C9X委員會修訂,遵循C90原則。 新特性: 1.支持國際化編程; 2.調(diào)整現(xiàn)有實踐致力于解決明顯的缺陷; 3.為適應(yīng)科學(xué)和工程項目中關(guān)鍵數(shù)值計算,提高C適應(yīng)性; |
| C11 |
特點: 1.不強調(diào)信任程序員; 2.不要求服務(wù)小型機市場供應(yīng)商支持目標(biāo)環(huán)境用不到的特性; |
C語言標(biāo)準(zhǔn)眾多,要如何判斷編譯器所支持的標(biāo)準(zhǔn)版本?
一個簡單的方法是,依據(jù)不同版本標(biāo)準(zhǔn)所支持的數(shù)據(jù)類型關(guān)鍵字來判別,如下表所示:
| K&R給出的關(guān)鍵字(87 經(jīng)典C) | C90添加關(guān)鍵字 | C99添加關(guān)鍵字 |
| int | signed | _Bool |
| long | void | _Complex |
| short | _Imaginary | |
| unsigned | ||
| char | ||
| float | ||
| double |
那么,可以在C程序中,定義相應(yīng)類型,然后build是否支持來判斷。
下面在Ubuntu OS下以為例,進(jìn)行測試。
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;
}
運行結(jié)果表明編譯器支持C99:
總結(jié)
以上是生活随笔為你收集整理的C 如何判断编译器是否支持C90 C99?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字1的个数
- 下一篇: 智能家居入门DIY——【六、使用OneN