0

我正在将代码从 Solaris 移植到 Windows Visual Studios。为了使代码与两者兼容,我使用了#if defined (Win32) 和#ifdef(OSTYPE_solaris) 等语句。我找到了 Win32 的定义位置,但我找不到 OSTYPE_solaris 的定义位置。我在想我可能找不到它的定义,因为我在 Visual Studios 上寻找它,而定义 OSTYPE_solaris 的标头在 Visual Studios 上不可用。我的假设是否正确?如果是这样,有谁知道 OSTYPE_solaris 是在哪里定义的?我用谷歌搜索了一下,但我没有找到这个问题的运气。我对 OSTYPE_linux 也有同样的困惑。

4

1 回答 1

0

我的猜测是它们是由编译器本身定义的。如果 Solaris 使用 gcc 作为编译器,您可以检查编译器定义的变量,如下所示:

回声"" | gcc -E -dM -

但我认为在大多数情况下你不应该按平台定义,最好使用基于特征的定义,如 HAVE_SOCKET_H。但这需要在提供这些定义的多平台构建系统上做更多的工作,而您可能不需要它们。

于 2012-07-30T16:00:48.737 回答