配置方法: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表示沒有給函式傳遞引...