首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言宏定义有关问题

2012-09-28 
c语言宏定义问题C/C++ code#include stdio.h#define N 100void f(void)int main(void){f()#ifdef N#un

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;} 

热点排行