关于#define 定义的先后顺序
来源:互联网 发布:数控下料机编程 编辑:程序博客网 时间:2024/05/22 21:02
#define定义先后顺序
今天查看代码的过程中,看到如下宏的定义
/*
* Size of malloc() pool
*/
#define CFG_MALLOC_LEN (CFG_ENV_SIZE + 1024*1024)
#define CFG_ENV_SIZE 0x4000
给我的第一感觉就是,是不是其他地方有CFG_ENV_SIZE这个宏的定义,不应该CFG_ENV_SIZE这个的定义是在CFG_MALLOC_LEN的后面,然后我在大的源码目录结构下搜索,确实有很多,把我给整晕了,后来想想,宏的定义跟函数的定义是不一样的。
宏的定义是编译器先展开宏再编译的,也就是说,编译器会事先把出现宏的地方全部替换掉,所以定义他们的先后顺序就无关紧要了。
如果还不放心,写一小段代码如下:
#include<stdio.h>
#define MAX_SIZE MAX_TEST+1
#define MAX_TEST 2
int main(int argc,char *argv[])
{
printf("%d\n",MAX_SIZE);
return 0;
}
执行如下命令,对程序进行展开:
gcc -E main.c
出现如下的显示
已经对宏进行了替换
0 0
- 关于#define 定义的先后顺序
- 关于代码执行的先后顺序
- 关于组件先后顺序的问题
- 关于#define宏定义的
- 关于#define定义的宏
- 关于js引入的先后顺序的小问题
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于printf函数输出先后顺序的讲解
- 关于asp.net中页面事件加载的先后顺序
- 关于Asp.NET中页面事件加载的先后顺序
- 关于导入jquery插件时的先后顺序问题
- 关于#define宏定义
- 关于define宏定义
- #define WIN32_LEAN_AND_MEAN 的作用
- oracle 11g GRID 中 关于 OLR 需要知道的一些内容
- 新的独立博客
- JS字符加密、php解密方法
- 获取UUID,类似于Microsoft的GUID
- 关于#define 定义的先后顺序
- 图像处理特征不变算子系列之KLT算子--GoodFeaturesToTrack(七)
- ORACLE函数之单行字符函数
- ibatis的#和$的区别、like、in的用法
- iOS调试技巧之加断点捕捉异常
- Oracle压缩功能小结2—预估表压缩的效果
- 表单验证(邮件和text必输项)
- XML学习笔记 第二记
- OCP 1Z0 052 113