跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:macro_expansion
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 宏扩展(Macro expansion) ====== 宏的扩展是一个多次进行的过程:当一个宏扩展之后,会返回到扩展结果的开头,继续再做一次扩展,以便识别出别的宏并扩展它,直到没有宏为止。 扩展在宏调用的时候进行,在#define定义的时候不进行,参见[[.:preprocessor|预处理概览]]。 例如宏定义: <code> #define plus(x, y) add(y, x) #define add(x, y) ((x) + (y)) </code> 调用: <code> plus(plus(a , b), c) </code> 的实际扩展过程如下: - plus(plus(a, b), c) - add(c, plus(a, b)) - %%((c) + (plus(a, b)))%% - %%((c) + (add(b, a)))%% - %%((c) + (((b) + (a))))%% 标准C不对递归形式(直接或间接)的宏进行重复扩展。否则扩展将无限进行下去,直到系统出错,但有些旧的编译器会这样。 递归形式的宏一般用于覆盖旧的定义。如: <code> #define char unsigned char </code> {{tag>C语言}}
computer/c/tips/macro_expansion.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部