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