簡體   English   中英

GNU99和C99(Clang)有什么區別?

[英]What's the difference between GNU99 and C99 (Clang)?

我看到了編譯器選項GNU99和C99。 它們的區別是什么? 任何細節文件? (Clang,Xcode,Mac OS X)

各種標准模式之間的差異

clang支持-std選項,它可以更改clang使用的語言模式。 C的支持模式是c89,gnu89,c94,c99,gnu99以及這些模式的各種別名。 如果未指定-std選項,則clang默認為gnu99模式。

所有c *和gnu *模式之間的差異:

  • c *模式定義__STRICT_ANSI__
  • 特定於目標的定義不以下划線為前綴,如“linux”,在gnu *模式中定義。
  • Trigraphs默認在gnu *模式下關閉; 它們可以通過-trigraphs選項啟用。
  • 解析器將“asm”和“typeof”識別為gnu *模式中的關鍵字; 變體__asm____typeof__在所有模式中都被識別。
  • 某些平台上的gnu *模式默認識別Apple“blocks”擴展名; 可以使用-fblocks選項在任何模式下啟用它。

更多鏈接

C99是直接C99,GNU99是帶有gnu擴展名的C99。 請參閱GCC聯機幫助頁

從1999年開始,C99就是C標准的版本,我們都知道。 在GCC,它沒有得到完全支持。

GNU99是C99的擴展,就像GNU98是C98的擴展一樣。 來自文檔:

ISO C99加上GNU擴展。 當ISO C99在GCC中完全實現時,這將成為默認值。 名稱gnu9x已棄用。

Clang也支持這些擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM