读书人

c语言宏定义有关问题

发布时间: 2012-09-28 00:03:35 作者: rapoo

c语言宏定义问题

C/C++ code
#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}




结果怎么是N is undefined这个呢?

[解决办法]
define相关的内容是编译的时候就翻译好的,
虽然你先运行f(),但是。。。
[解决办法]
C/C++ code
#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了:
C/C++ code
#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;} 

读书人网 >C语言

热点推荐