Или я туплю, или msvc.
#define MY_COND ( 1 && defined(_MSC_VER) )
#if ( 1 && defined(_MSC_VER) )
#pragma message( "CHECK_TRUE" )
#else
#pragma message( "CHECK_FALSE" )
#endif
#if MY_COND
#error TEST_TRUE
#else
#error TEST_FALSE
#endif
C:\K13\Work\1>cl -c t.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
t.cpp
CHECK_TRUE
t.cpp(12) : fatal error C1189: #error : TEST_FALSE
Вот почему? Почему если в #if значение макроса -- то все пучком, а если имя -- то результат обратный?
вроде бы подстановка макросов осуществляется, пока есть что подставлять?