宏定义中的MSVC define()

时间:2019-01-06 16:55:41

标签: c++ visual-c++ preprocessor

我刚遇到MSVC 2017( _MSC_VER == 1912 )的怪异问题。遵循#define MACRO (defined(OTHER_MACRO))模式的宏的定义似乎在MSVC中总是评估为false。使用GCC进行测试似乎可以很好地实现这种模式。

使用MSVC 2017编译时,以下代码输出Not using MSVC

#define MSVC_COMPILER (defined(_MSC_VER))

#include <iostream>

int main() {
#if MSVC_COMPILER
    std::cout << "Using MSVC\n";
#else
    std::cout << "Not using MSVC\n";
#endif

    return 0;
}

以下代码输出Using MSVC

#include <iostream>

int main() {
#if defined(_MSC_VER)
    std::cout << "Using MSVC\n";
#else
    std::cout << "Not using MSVC\n";
#endif

    return 0;
}

为什么?这是编译器错误吗?

0 个答案:

没有答案