2011-09-17 28 views

回答

3

使用-std=標誌來指定語言方言:c89c99c++98等需要注意的是c90相當於c89

作爲簡寫-ansi導致C模式下的-std=c89和C++模式下的-std=c++98。使用-pedantic來啓用標準要求的所有診斷。

C的默認值爲gnu89,C++的默認值爲gnu++98。有關各種方言的詳細說明,請參閱手冊。

+0

這些是默認值? gcc中有一個選項可以讓我看到默認版本嗎? – Bruce

+0

@布魯斯:已添加!請注意,C++默認可能最終會改變:-) –

+0

* C模式*和* C++模式*是什麼意思?最近我讀了[GCC 4.8目標默認切換到C++模式](http://www.phoronix.com/scan.php?page=news_item&px=MTA4MzI)。這是什麼意思? – Nawaz

6

閱讀幫助頁面。在我的電腦(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++代碼的默認值。

+0

適用於GCC,但不適用於Clang。 –

+0

Ummm'man gcc'說沒有gcc的手冊頁。笏? – starbeamrainbowlabs

0

您還可以檢查predefined Macros之一,例如在默認情況下你的GCC是否向ANSI C(STRICT__ANSI)(即不帶任何命令行參數)。

+0

默認情況下,gcc的任何版本都完全符合任何ANSI/ISO標準。 –

3

以下命令嘗試和尋找std

gcc -v --help | less 

它會告訴你所有你的gcc可用的選項。

+1

但不是默認使用哪個選項。 –

0

沒有版本的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=...命令行選項指定所需版本來完全避免該問題。

相關問題