c语言宏定义问题
#include <stdio.h>#define N 100void f(void);int main(void){ f();#ifdef N#undef N#endif return 0;}void f(void){#if defined(N) printf("N is %d\n", N);#else printf("N is undefined\n");#endif}#include <stdio.h>#define N 100void f(void);int main(void){ //f();#if defined(N) printf("N is %d\n", N);#else printf("N is undefined\n");#endif#ifdef N#undef N#endif #if defined(N) printf("N is %d\n", N);#else printf("N is undefined\n");#endif return 0;}void f(void){#if defined(N) printf("N is %d\n", N);#else printf("N is undefined\n");#endif}
[解决办法]
预编译器是按照文本顺序解析的,掉换过来就OK了:
#include <stdio.h>#define N 100void f(void){#if defined(N) printf("N is %d\n", N);#else printf("N is undefined\n");#endif}int main(void){ f();#ifdef N#undef N#endif return 0;}