0

我知道我可以检测到编译器类型(例如 gcc:http: //sourceforge.net/p/predef/wiki/Compilers/)。但是g++呢?如果我使用 g++,我也可以使用__GNUC__宏来测试吗?

关于操作系统类型的另一个问题。我知道,我可以这样做:

#if defined(__linux__)
    /* Linux. --------------------------------------------------- */

#endif

但是如何使它成为一个优雅的解决方案呢?让它成为main中的第一个函数?我是说:

#include <iostream>

int compiler()
{
    #if defined (__GNUC__)
        return 0;
    #elif defined (_MSC_VER)
        return 1;
    #else
        return -1;
    #endif;
}

int os()
{
    #if defined(_WIN32) || defined(_WIN64)
        return 0;
    #elif defined(__linux__)
        return 1;
    #else
        return -1;
    #endif
}

int main(int argc, char **argv)
{
    std::cout << compiler() << "\n";
    std::cout << os();
    return 0;
}

上面的代码是优雅的,还是可以做得更好(更便携等)?

4

0 回答 0