我想通過使用默認的預處理器定義來確定我的代碼的哪些部分應該基於平臺和編譯器進行編譯的「乾淨方式」。默認預處理器定義和跨平臺編譯
我目前的測試設置包括一臺Windows計算機用Visual C++編譯器和G ++編譯器的Debian。
目前,我有這樣的事情:
#if defined (__GNUG__)
#define ASMMath_EI __attribute__ ((__visibility__("default")))
#elif defined (WIN32)
#ifdef ASMMath_EXPORTS
#define ASMMath_EI __declspec(dllexport)
#else
#define ASMMath_EI __declspec(dllimport)
#endif
#endif
extern void ASMMath_EI AsmProblemOne();
和它的作品,但我想可能有和必須有一些更好的定義,我可以檢查。或者也許用CMake更理想一些? 建議?
注在Windows上使用GCC進行編譯時,\ _ \ _ GNUG \ _ \ _也設置爲true。更好地使用\ _ \ _ linux \ _ \ _。 – Ionic
@Ionic圖。我不確定我是否需要* nix或g ++的定義。 – TheDespite
對不起,似乎* NIX特異性按照:http://gcc.gnu.org/wiki/Visibility – Ionic