Visual c++ 使用/WX编译器选项,Visual C++;不应该构建我的程序,但它确实

Visual c++ 使用/WX编译器选项,Visual C++;不应该构建我的程序,但它确实,visual-c++,compiler-errors,compiler-warnings,compiler-options,Visual C++,Compiler Errors,Compiler Warnings,Compiler Options,设置了/WX编译器选项后,此代码不应编译,但它会: #include <iostream> int main() { //#pragma warning( disable : 4005 ) // macro redefinition #define TEST_MACRO 123 std::cout << TEST_MACRO; #define TEST_MACRO 456 std::cout << TEST_MACRO; } 为什么

设置了/WX编译器选项后,此代码不应编译,但它会:

#include <iostream>

int main()
{
//#pragma warning( disable : 4005 ) // macro redefinition

#define TEST_MACRO 123

    std::cout << TEST_MACRO;

#define TEST_MACRO 456

    std::cout << TEST_MACRO;
}

为什么没有将警告C4005转换为错误?

问题在于:我为x64版本设置了/WX选项,但随后生成了Win32版本

这是一个快速测试项目,奇怪的是Visual Studio创建了一个简单的空Win32项目,当我更改项目属性时,对话框默认设置为x64

1>------ Rebuild All started: Project: TestWarningDisable, Configuration: Debug Win32 ------
1>TestWarningDisable.cpp
1>E:\test\TestWarningDisable\TestWarningDisable.cpp(14,1): warning C4005: 'TEST_MACRO': macro redefinition
1>E:\test\TestWarningDisable\TestWarningDisable.cpp(10): message : see previous definition of 'TEST_MACRO'
1>TestWarningDisable.vcxproj -> E:\test\TestWarningDisable\Debug\TestWarningDisable.exe
1>Done building project "TestWarningDisable.vcxproj".
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========