Странный глюк препроцессора.
От: K13 http://akvis.com
Дата: 02.09.14 06:09
Оценка:
Или я туплю, или 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 значение макроса -- то все пучком, а если имя -- то результат обратный?
вроде бы подстановка макросов осуществляется, пока есть что подставлять?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.