我想通过使用默认的预处理器定义来确定我的代码的哪些部分应该基于平台和编译器进行编译的“干净方式”。默认预处理器定义和跨平台编译
我目前的测试设置包括一台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