OS平台支持宏和Boost库

时间:2018-09-27 05:07:12

标签: c++ boost

我写了下面的代码来检测操作系统,并且在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_ *”宏,那么如何替换上面的代码,使其也能与较早的增强版本一起工作?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

为了使代码正常工作,您基于运行的Boost版本添加了一些条件编译。如果是1.55或更高版本,则只需按原样编译代码。如果是较早的版本,则只需重现后来的Boost版本在本地使用的操作系统检测代码,例如只需从更高版本中复制代码即可。