我试图找出一种“干净的方式”来使用默认的预处理器定义来确定应该根据平台和编译器编译我的代码的哪些部分。
我当前的测试设置涉及一台带有 Visual C++ 编译器的 Windows 机器和一个带有 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 方式?建议?