define的作用域

来源:互联网 发布:最优化理论算法 答案 编辑:程序博客网 时间:2024/05/20 21:21

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




原创粉丝点击