2014-01-27 123 views
3

我只需要澄清一件事。在大學我們正在學習C++編程語言,他們建議我們使用屬於GCC的GNU C++編譯器。 因此,在我的Mac OS X Mavericks上,我從developers.apple.com下載了命令行工具。 我寫了一個簡單的C++程序,我用這樣的命令++對於g編譯這個程序:g ++編譯器與C++的gcc編譯器相同嗎? (Mac OS X)

g++ program.cpp 
./a.out 

而程序運行完美。但是,據我所知,使用不同的編譯器,意味着你必須爲這個特定的編譯器使用正確的語法/命令/庫,所以在大學裏我們使用「GNU C++編譯器」,我只是想清楚地說明g ++命令是指我使用「GNU C++編譯器」。

乾杯。

+7

您可以使用'g ++ --version'來檢查您是否使用GNU C++。在我的OS X Mavericks中,'g ++'不是'GNU C++',它是'clang ++' – mitchelllc

+0

'配置爲:--prefix =/Applications/Programming/Xcode.app/Contents/Developer/usr --with-gxx -include-dir =/usr/include/C++/4.2.1 Apple LLVM 5.0版(clang-500.2.79)(基於LLVM 3.3svn) 目標:x86_64-apple-darwin13.0.0 線程模型:posix' 這是命令的結果。 –

+0

同樣的結果。它是'clang ++',而不是'GNU C++' – mitchelllc

回答

1

按@duskwuff,我寧願使用clang++,但是如果你必須兼容,那麼你可以通過macports來安裝真正的GNU編譯器。

安裝MacPorts的(其中包括一個xcode-select步)後,只需做:

$ sudo port selfupdate 
$ sudo port install gcc46 

(或gcc47等)

編譯器會在你的$PATH(如果你建立的MacPorts正確),但明確地說,它將是/opt/local/bin/gcc46(請參閱sudo port select gcc)。

+0

爲什麼使用macports時可以使用自制軟件? – rano

+0

@rano因爲macports有更多的端口,並且不那麼複雜WRT'$ PATH'(就我所知,至少)。 – trojanfoe

+0

Homebrew的'$ PATH'就像π一樣簡單:確保'/ usr/local/bin'在那裏。 Bam,完成了。 – duskwuff

2

傳統上,gccg++都是GNU C編譯器套件的組件。 gcc是C編譯器,而g++是C++編譯器。

在Mac OS X的當前版本,則命令gccg++都視爲對clangclang++替代名稱,其是鏘C編譯器的組成部分。然而,這個編譯器幾乎完全兼容GCC--幾乎肯定不會出現你正在做的課程中存在的少數差異。 (最顯着的區別是Clang的診斷更好:它將指出語法錯誤發生在一行中的確切位置,而不是它在哪一行上,並且它通常可以識別潛在的錯別字或細微的錯誤情況下GCC只想給你一個神祕的錯誤消息。如果你剛開始學習C,你會明白這很多

+4

關於更好的診斷的東西是值得商榷的。現在GCC也使用ASCII藝術來精確指出錯誤發生在一行代碼中的哪個位置。比賽是一件奇妙的事情:) – Praetorian

+0

那真的謝謝你!當我第一次編譯C++程序時,我看到編譯器使用顏色突出顯示了錯誤,並且它比錯誤更爲詳細,而不是我在Linux上使用的gcc。 –

+1

@Praetorian:據我瞭解,GCC的語法分析器在識別語法錯誤的「根本原因」方面(仍然)不是很棒 - 它會告訴你它完全放棄了什麼點,但這可能離一定距離實際的錯誤。我聽說它正在改進,但它還不如叮噹,我很害怕! – duskwuff