我正在将代码从Solaris移植到Windows Visual Studios。为了使代码与两者兼容,我使用的语句如#if defined(Win32)和#ifdef(OSTYPE_solaris)。我找到了定义Win32的位置,但我找不到定义OSTYPE_solaris的位置。我想我可能找不到它的定义,因为我在Visual Studios上寻找它,并且在Visual Studio上没有定义OSTYPE_solaris的标题。我在这个假设中是否正确?如果是这样,有没有人知道OSTYPE_solaris的定义在哪里?我用Google搜索了一下,但我没有找到这个问题的运气。我对OSTYPE_linux也有同样的难题。
答案 0 :(得分:0)
我的猜测是它们是由编译器本身定义的。如果Solaris使用gcc作为编译器,您可以检查编译器定义的变量,如下所示:
echo“”| gcc -E -dM -
但我认为你不应该在大多数情况下ifdef平台,最好使用基于特征的定义,如HAVE_SOCKET_H。但这需要在提供这些定义的多平台构建系统上做更多的工作,而您可能不需要它们。