【发布时间】:2018-09-27 05:07:12
【问题描述】:
我写了下面的代码来检测操作系统,它在 boost 版本 > 1.55 下工作正常,但旧的 boost 库(例如 1.48)不支持操作系统宏。
以下是在 boost >= 1.55 下正常工作的示例代码。
std::string GetOSPlatform()
{
std::string platformStr = "Unknown";
#if defined(BOOST_OS_MACOS) || defined(BOOST_OS_IOS)
platformStr = "osx";
#endif
#if defined(BOOST_OS_WINDOWS)
platformStr = "windows";
#if BOOST_ARCH_X86_64
platformStr += "-x64";
#endif
#endif
#if defined(BOOST_OS_UNIX) || defined(BOOST_OS_LINUX)
platformStr = "linux";
#if BOOST_ARCH_X86_64
platformStr += "-x64";
#endif
#endif
#if BOOST_OS_SOLARIS
platformStr = "solaris";
#if BOOST_ARCH_SPARC
platformStr += "-sparc";
#else
platformStr += "-x64";
#endif
#endif
#if BOOST_OS_HPUX
platformStr = "hp-ux";
#endif
return platformStr;
}
int main()
{
std::string pltform = GetOSPlatform();
std::cout << "platform....." << pltform << std::endl;
return 0;
}
boost 版本
有什么建议吗?
【问题讨论】:
-
为什么要添加“c”标签?盲目应用前请阅读标签说明!
-
您必须大致实现 v1.55 或更高版本的宏自己实现的内容。如果旧版本不提供它们,您将不得不这样做。或者坚持将机器升级到 Boost 1.55 或更高版本。要求升级可能更容易。
-
顺便说一句:您为什么关心五年前 (boost.org/users/history) 发布的 Boost 版本?另外,根据您的问题所缺少的“作品”的定义,上面的代码确实有效!请阅读How to Ask 并更具体地了解您的目标。
-
@UlrichEckhardt 我担心早期版本,因为 centOS 6 为旧版本提供了 yum,所以我需要验证所有版本的 boost。