Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Конечно пофигу. 12.11.02 12:04 Число просмотров: 1327
Автор: PS <PS> Статус: Elderman
|
> Народ, а что сабжу пофигу находится ли он в блоке if или > нет? Просто при обработке следующего кода всегда > отдефинивается последнее значение... > > if(nID == 1001) > { > #define Active Active1 > #define DirPath DirPath1 > } > else if(nID == 1007) > { > #define Active Active2 > #define DirPath DirPath2 > }
#define отрабатывется препроцессором до компиляции. Препроцессор же ничего не знает об if, ect...
Например код
#define a 5
printf( "%ld", a );
#define a 6
printf( "%ld", a );
Перед компиляцией (но после препроцессора) будет выглядеть так:
printf( "%ld", 5 );
printf( "%ld", 6 );
В твоем примере, если ты постевишь printf в if - то увидишь первое значение, если в else - то второе, а если после if/else - то тоже второе (последнее т.е.)
Кстати тебе компилятор никакого warning не выдал на счет редифинишена макроса ?
|
|
|