我写了下面的代码来检测操作系统,并且在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;
}
增强版本<1.55不支持“ BOOST_OS_ *”宏,那么如何替换上面的代码,使其也能与较早的增强版本一起工作?
有什么建议吗?
答案 0 :(得分:0)
为了使代码正常工作,您基于运行的Boost版本添加了一些条件编译。如果是1.55或更高版本,则只需按原样编译代码。如果是较早的版本,则只需重现后来的Boost版本在本地使用的操作系统检测代码,例如只需从更高版本中复制代码即可。