2014-12-30 2 views
0

Как подсказки названия, мой вопрос заключается в том, действуют ли директивы препроцессора #if и #endif как область? Рассмотрим пример:Выполняет #if #endif как область видимости?

#define foo 1 
#define bar 1 

#if foo 
#undef bar 
#endif //foo 

// Is 'bar' defined or undefined here? 
+0

Если вы имеете в виду область видимости во времени для определения, то нет, это не область. bar будет неопределенным. – user1810087

+0

Как вы хотите проверить: 'if foo', но для этого нет значения? – Rizier123

+0

Пожалуйста, заново открыть. Это другой вопрос, а не дубликат упомянутого вопроса. – Jens

ответ

0

Теперь ваш пример просто проверить его, и вы увидите его:

#include <stdio.h> 

#define foo 1 
#define bar 1 

#if foo 
#undef bar 
#endif //foo 

int main() { 

    printf("%d", bar); 

    return 0; 
} 

Вывод из моего компилятора:

[Error] 'bar' undeclared (first use in this function) 

Так как вы можете видеть это необъявленная

+2

будет ли это независимо от компилятора? Я спрашиваю теоретически. –

+0

@ Г.Расовский Да (см .: http://ideone.com/c5qFII) – Rizier123

Смежные вопросы