跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:conditional_compliation
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 条件编译(Conditional compliation) ====== 通过#if、#elif、#ifdef、#ifndef、#else、#endif等预编译指令选择进行下一步编译的代码。 基本形式如下: <code> #if constant-expression-1 group-of-lines-1 #elif constant-expression-2 group-of-lines-2 ... #elif constant-expression-n group-of-lines-n #else last-group-of-lines #endif </code> 几个要点: * #elif和#else是可选的。 * constant-expression-?经过宏替换后,结果必须是一个算术常量,非0表示真,0表示假。 * 这些预编译指令可以嵌套,但必须配对。 * 任意情况下,最多有一组代码会进行下一步的编译,其余都被丢弃。丢弃部分不会被预处理器处理,所以其中的宏替换代码、预处理指令等都不会执行。 * 如果constant-expression-?中含有未定义的宏,则将其当作整型常量0进行计算。 #ifdef(#ifndef)用于测试一个预处理宏是否被定义(没有定义),如果定义(没有定义)则为真,否则为假。 <note> #ifdef(#ifndef)关心的是宏定义与否,而与宏的具体值无关。一个常见的错误就是把"#if name"与"#ifdef name"混淆。 </note> #ifdef的另一个表达方式是使用defined操作符,形式如下: <code> defined name 或 defined(name) </code> #ifdef name与#if defined(name)等同。 #if defined(name)的形式在表达式比较复杂时尤为有用。如: <code> #if defined(VAX) && !defined(UNIX) && defined(DEBUG) </code> {{tag>C语言}}
computer/c/tips/conditional_compliation.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部