我看了here它是帶擴展名的C90。我怎麼知道確切的?如何找出默認情況下我的gcc使用哪種ANSI C標準?
回答
使用-std=
標誌來指定語言方言:c89
,c99
,c++98
等需要注意的是c90
相當於c89
。
作爲簡寫-ansi
導致C模式下的-std=c89
和C++模式下的-std=c++98
。使用-pedantic
來啓用標準要求的所有診斷。
C的默認值爲gnu89
,C++的默認值爲gnu++98
。有關各種方言的詳細說明,請參閱手冊。
閱讀幫助頁面。在我的電腦(OSX 10.7,gcc版本4.2.1(基於蘋果公司建立5658)(LLVM建設2335.15.00)):
-std =
確定語言標準。此選項目前僅支持
編譯C或C++時。必須提供此選項的值;可能的值是
....
gnu89
默認,ISO C90加GNU擴展(包括一些C99的功能)。....
GNU ++ 98
同樣作爲-std = C++ 98個加GNU擴展。這是C++代碼的默認值。
適用於GCC,但不適用於Clang。 –
Ummm'man gcc'說沒有gcc的手冊頁。笏? – starbeamrainbowlabs
您還可以檢查predefined Macros之一,例如在默認情況下你的GCC是否向ANSI C(STRICT__ANSI)(即不帶任何命令行參數)。
默認情況下,gcc的任何版本都完全符合任何ANSI/ISO標準。 –
以下命令嘗試和尋找std
gcc -v --help | less
它會告訴你所有你的gcc可用的選項。
但不是默認使用哪個選項。 –
沒有版本的gcc默認完全符合任何ANSI或ISO C標準。默認值總是等於-std=gnuNN
,支持GNU特定擴展的給定標準。在版本5之前(並且回溯若干年),缺省值爲-std=gnu90
。從版本5開始,默認值爲-std=gnu11
。
已經有三個ISO C標準:C90,C99和C11。 (C95是對C90的一個小修改。)第一個ANSI C標準於1989年發佈,被稱爲C89;它描述了與ISO C90標準相同的語言。
要找出你已經運行了gcc的默認語言版本,類型
info gcc
搜索短語「默認」。
這假設你已經安裝了gcc文檔,info gcc
顯示的文檔與你正在運行的gcc的版本相匹配,而且措辭非常相似,搜索「默認」將找到正確的信息。這些都不能保證。舊的gcc手冊可能以不同的方式組織。
更可靠,運行
gcc --version
看到你正在運行的版本,然後訪問GCC online documentation頁面,閱讀您正在運行的版本的文檔。
更簡單地說,如果你有5.0之前的版本,默認是-std=gnu89
;否則默認爲-std=gnu11
。 (這可能會在未來版本中發生變化,但僅在發佈新的ISO C標準並且海灣合作委員會維護人員有時間實施並決定將其設置爲默認設置後的一段時間內。不要屏住呼吸。)
或者,您可以通過使用-std=...
命令行選項指定所需版本來完全避免該問題。
- 1. 產量和默認情況||不輸出默認情況下
- 2. 默認情況下,您如何讓BeginForm使用標準的accept-charset?
- 3. 我們應該使用哪種JBoss配置 - web,標準,默認?
- 4. 默認情況下,Capistrano如何工作?
- 5. 默認情況下,NSPersistentContainer創建哪種持久性存儲?
- 6. 在哪種情況下我們在C編程中使用jmp_buf
- 7. 在哪種情況下使用System.UnicodeString.Format?
- 8. 默認情況下,使qmake使用qt5
- 9. 默認情況下,標準庫http包將日誌記錄到標準輸出,我可以禁用它嗎?
- 10. 默認情況下,OSX上的MySQL在哪裏寫出outfiles?
- 11. Switch語句。使用默認情況下
- 12. 默認情況下,JMS使用HTTP?
- 13. 默認情況下,Constexpr lambda?
- 14. C++:在哪種情況下將使用哪個運算符[]?
- 15. 選擇標籤:默認情況下
- 16. 如何在沒有優化的情況下使用gcc與gcc?
- 17. 默認情況下不會執行C++
- 18. 默認情況下如何顯示ionicPopover
- 19. 默認情況下,如何選擇UITableViewCell?
- 20. 我應該使用哪種佈局在這種情況下?
- 21. 我應該在這種情況下使用哪種SQL查詢
- 22. 默認情況下,.cu源文件中包含哪些標題?
- 23. 使用HttpsURLConnection默認情況下Java哪些證書信任?
- 24. 安卓:默認情況下
- 25. 默認情況下,法國
- 26. 默認情況下在VBox
- 27. 在默認情況下
- 28. FactoryGirl在默認情況下
- 29. 默認情況下,C#枚舉實現了哪些接口
- 30. Django:默認情況下如何過濾使用username__iexact的用戶?
這些是默認值? gcc中有一個選項可以讓我看到默認版本嗎? – Bruce
@布魯斯:已添加!請注意,C++默認可能最終會改變:-) –
* C模式*和* C++模式*是什麼意思?最近我讀了[GCC 4.8目標默認切換到C++模式](http://www.phoronix.com/scan.php?page=news_item&px=MTA4MzI)。這是什麼意思? – Nawaz