我是來自C#.NET和Visual Studio背景(以及一些Objective-C/XCode)的C++的新手。如何編寫在IDE之間工作的C++代碼?
我想用C++編寫跨平臺(Windows,OS X,Linux)應用程序。我從我的Mac上的TextMate和Windows上的記事本開始,在命令行/終端上使用g ++編譯代碼以在其平臺上構建可執行文件。
我弄糊塗了,當我開始使用IDE(即VC++,的XCode,並Eclipse的)。我在粘貼我的代碼之前嘗試了所有三個並創建了項目。如果我在一個IDE中開始編輯,我不知道如何讓最終的代碼片段在不同的平臺上編譯。
例如,如果我有一個類文件 - foo.cpp
。在Eclipse中,它將生成foo.cpp
(在其中的一個foo.h
,foo::foo()
)和一個單獨的foo.h
頭文件(在其中一個FOO_H_
文件等)。在Xcode中,它生成一個文件夾Foo
constains main.cpp
和foo.l
) - 就是這樣。爲什麼區別?
我雖然C++代碼只是C++代碼,如果在該平臺上編譯,它就會生成特定於平臺的可執行文件。 (例如,在Mac上編譯,它將成爲Mac可執行文件;如果在Windows上編譯,它將成爲Windows可執行文件)。
看來,一旦我開始使用IDE,由於所有這些我不瞭解的自動生成的文件,我的C++代碼自動變得不可移植。我嘗試同時閱讀XCode,Eclipse和Visual Studio中的文檔,這讓我更加困惑。我只想寫C++ ...
我也是繼Stroustrup的經典文本拿起C++並在書中,沒有像頭或.h
或_H_
文件的源被提及,因爲爲什麼所有這些文件被生成。
除了使用Notepad/Textmate + G ++編譯器外,我如何在可以跨平臺的IDE中編寫純粹的,可移植的C++程序,或者甚至有可能?
您需要頭文件來在編譯單元和庫接口之間共享其他使用者的類定義。如果你在一個文件中做所有事情,那麼你不需要它們。其他項目模板可能僅僅是該平臺的有用的東西,例如VC創建stdafx.h以用作預編譯頭文件,以便在構建時加速包括所有Windows API頭文件等。如果您擔心,請丟棄模板項目生成的文件,並從一個空文件開始。 – Rup
而'FOO_H_'等是[include guard](http://en.wikipedia.org/wiki/Include_guard) - 這是一種避免重新解析頭文件兩次的機制,如果在相同的彙編中包含它兩次單位通過不同的路線等 – Rup