keil arm 中配置c99方法 及 C99特性

2021-10-07 12:46:49 字數 1442 閱讀 6110

配置方法:option->c/c++->misc controls:--c99

附c99特性:

在ansi的標準確立後,c語言的規範在一段時間內沒有大的變動,然而c++在自己的標準化建立過程中繼續發展壯大。《標準修正案一》在2023年為c語言建立了乙個新標準,但是只修正了一些c89標準中的細節和增加更多更廣的國際字符集支援。不過,這個標準引出了2023年iso 9899:1999的發表。它通常被稱為c99。c99被ansi於2023年3月採用。

在c99中包括的特性有:

增加了新關鍵字 restrict, inline, _complex, _imaginary, _bool

支援不定長的陣列,即陣列長度可以在執行時決定,比如利用變數作為陣列長度。宣告時使用 int a[var] 的形式。不過考慮到效率和實現,不定長陣列不能用在全域性,或 struct 與 union 裡。

變數宣告不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i<100;++i) 的形式,即i 只在 for 語句塊內部有效。

允許採用(type_name) 類似於 c++ 的建構函式的形式構造匿名的結構體。

初始化結構的時候允許對特定的元素賦值,形式為:

struct test foo =  , [1].a = 2 };

struct test foo =    // 3,4 是對 .c,.d 賦值的

格式化字串中,利用 \u 支援 unicode 的字元。

支援 16 進製的浮點數的描述。

printf scanf 的格式化串增加了對 long long int 型別的支援。

浮點數的內部資料描述支援了新標準,可以使用 #pragma 編譯器指令指定。

除了已有的 __line__ __file__ 以外,增加了 __func__ 得到當前的函式名。

允許編譯器化簡非常數的表示式。

修改了 / % 處理負數時的定義,這樣可以給出明確的結果,例如在c89中-22 / 7 = -3, -22 % 7 = -1,也可以-22 / 7= -4, -22 % 7 = 6。 而c99中明確為 -22 / 7 = -3, -22 % 7 = -1,只有一種結果。

取消了函式返回型別預設為 int 的規定。

允許 struct 定義的最後乙個陣列不指定其長度,寫做 (flexible array member)。

const const int i 將被當作 const int i 處理。

增加和修改了一些標準標頭檔案,比如定義 bool 的 ,定義一些標準長度的 int 的 ,定義複數的 ,定義寬字元的 ,類似於泛型的數學函式 , 浮點數相關的 。 在增加了 va_copy 用於複製 ... 的引數。 裡增加了 struct tmx ,對 struct tm 做了擴充套件。

輸入輸出對寬字元以及長整數等做了相應的支援。

keil arm 中配置c99方法 及 C99特性

配置方法 option c c misc controls c99 附c99特性 在ansi的標準確立後,c語言的規範在一段時間內沒有大的變動,然而c 在自己的標準化建立過程中繼續發展壯大。標準修正案一 在1994年為c語言建立了乙個新標準,但是只修正了一些c89標準中的細節和增加更多更廣的國際字符...

GCC與Dev Cpp支援C99標準設定方法

gcc與dev cpp都是支援c99的,但其預設值不是c99標準,為了使用c99語法可以進行如下操作 1 gcc 編譯時加入編譯選項 std c99 注意c為小寫 例 gcc o temp temp.c std c99 小寫c 2 dev cpp step1 工具 編譯選項 編譯器選項卡中,在 編譯...

C99標準中的 main 函式

一 main 函式的形式 在最新的 c99 標準中,只有以下兩種定義方式是正確的 int main void 無引數形式 int main int argc,char argv 帶引數形式 int指明了main 函式的返回型別,函式名後面的圓括號一般包含傳遞給函式的資訊。void表示沒有給函式傳遞引...