我正在将代码从Solaris移植到Windows Visual Studios。为了使代码与两者兼容,我使用了#if defined (Win32)和#ifdef(OSTYPE_solaris)这样的语句。我找到了定义Win32的位置,但找不到定义OSTYPE_solaris的位置。我在想,我可能找不到它的定义,因为我在Visual Studios上寻找它,而定义OSTYPE_solaris的标题在Visual Studios上不可用。我的假设是正确的吗?如果是这样,有人知道OSTYPE_solaris是在哪里定义的吗?我在谷歌上搜索了一下,但我在这个问题上找不到机会。我在OSTYPE_linux上也遇到了同样的难题。
发布于 2012-07-31 00:00:49
我猜测它们是由编译器本身定义的。如果Solaris使用gcc作为编译器,您可以检查编译器定义的变量,如下所示:
echo "“| gcc -E -dM -
但我认为在大多数情况下你不应该使用平台定义,最好使用像HAVE_SOCKET_H这样的基于特征的定义,但这需要在提供这些定义的多平台构建系统上做更多的工作,而且你可能不需要它们。
https://stackoverflow.com/questions/11724939
复制相似问题