define的作用域

1、#define的作用域问题:

#include<stdio.h>
#include<stdlib.h>

void toDefine(){
#define TEST
}

void testDefine(){
#ifdef TEST
        printf("Defined \n");
#else
        printf("not defined \n");
#endif
}

void main(void){
        testDefine();
}
运行结果是:Defined

为什么呢?在预编译过程中,#define TEST会被编译器成功的识别,那么TEST的作用域就是从定义到文件结尾的范围;

所以#define一般都放在了文件头部了,目的就是为了覆盖整个代码范围;

如果将代码改为:

#include<stdio.h>
#include<stdlib.h>

void testDefine(){
#ifdef TEST
        printf("Defined \n");
#else
        printf("not defined \n");
#endif
}

void toDefine(){
#define TEST
}

void main(void){
        testDefine();
}

运行结果就是not defined了;

参考:http://blog.csdn.net/fly542/article/details/6577262




你可能感兴趣的:(define的作用域)