c 预处理 命令详解
4页1、C 预处理命令详解C预处理命令详解2010-04-1519:08常用的预处理命令如下l#define定义一个预处理宏l#undef取消宏的定义l#include包含文件命令l#include_next与#include相似,但它有着特殊的用途l#if编译预处理中的条件命令,相当于C语法中的if语句l#ifdef判断某个宏是否被定义,若已定义,执行随后的语句l#ifndef与#ifdef相反,判断某个宏是否未被定义l#elif若#if,#ifdef,#ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-ifl#else与#if,#ifdef,#ifndef对应,若这些条件不满足,则执行#else之后的语句,相当于C语法中的elsel#endif#if,#ifdef,#ifndef这些条件命令的结束标志.l#line标志该语句所在的行号l将宏参数替代为以参数值为内容的字符窜常量l将两个相邻的标记(token)连接为一个单独的标记常用的预处理命令中编程技巧:1)宏定义语句中可以利用来换行.e.g.#defineONE1/*ONE=1*/等价于:#d
2、efineONE1#defineerr(flag,msg)if(flag)printf(msg)等价于:#defineerr(flag,msg)if(flag)printf(msg)2)函数宏之后的参数要用括号括起来e.g.#definemul(x,y)(x)*(y)看看下面这个例子e.g.#definemul(x,y)x*ymul(1,2+2);将被扩展为:1*2+2同样,整个标记串也应该用括号引用起来e.g.#definemul(x,y)(x)*(y)sizeofmul(1,2.0)将被扩展为sizeof1*2.03)函数宏的参数问题e.g.#defineinsert(stmt)stmtinsert(a=1;b=2;)相当于在代码中加入a=1;b=2.insert(a=1,b=2;)就有问题了预处理器会提示出错函数宏的参数个数不匹配.预处理器把,视为参数间的分隔符.insert(a=1,b=2;)可解决上述问题.4do-while(0)语句#defineswap(x,y)dounsignedlong_temp=x;x=y;y=_tmpwhile(0)swap(1,2);将被替换为d
3、ounsignedlong_temp=1;1=2;2=_tmpwhile(0);Linux内核源代码中对这种do-while(0)语句有这广泛的应用.5)宏可以被多次定义,前提是这些定义必须是相同的.这里的相同要求先后定义中空白符出现的位置相同,但具体的空白符类型或数量可不同,比如原先的空格可替换为多个其他类型的空白符可为tab键e.g.#defineNULL0#defineNULL/*nullpointer*/0上面的重定义是相同的,但下面的重定义不同#definefun(x)x+1#definefun(x)x+1或:#definefun(y)y+1如果多次定义时,再次定义的宏内容是不同的,gcc会给出NAMEredefined警告信息.6)在gcc中,可在命令行中指定对象宏的定义e.g.$gcc-Wall-DMAX=100-otmptmp.c/-D是前缀相当于在tmp.c中添加#defineMAX100.那么,如果原先tmp.c中含有MAX宏的定义,那么再在gcc调用命令中使用-DMAX,会出现什么情况呢?-若-DMAX=1,则正确编译.-若-DMAX的值被指定为不为1的值,那么g
《c 预处理 命令详解》由会员小**分享,可在线阅读,更多相关《c 预处理 命令详解》请在金锄头文库上搜索。
2020年高考真题——理科综合(全国卷Ⅲ)+Word版含答案
2021年绝味鸭脖策划书
2021年熟食店创业方案
2021年熟食店开店策划
2021年卤菜店创业计划书
2021年周黑鸭网络营销策划方案
东大21年1月考试《现代设计方法》考核作业
谈我国行政管理效率的现状及其改观对策(论文)
单证员考试-备考辅导-复习资料:无贸易背景信用证案分析.docx
土木工程毕业生答辩自述.docx
建筑学毕业后工作状态真实写照.doc
C#代码规范(湖南大学).doc
xx区食药监局2019年工作总结及2020年工作计划
2019年中医院药物维持治疗门诊工人先锋号先进事迹
2019年度xx乡镇林长制工作总结
2019年性艾科工作计划书
2019年人才服务局全国扶贫日活动开展情况总结
关于组工信息选题的几点思考
摘了穷帽子 有了新模样
2019年某集团公司基层党支部书记培训班心得体会
2024-04-08 33页
2024-04-08 10页
2024-04-08 25页
2024-04-08 12页
2024-04-08 10页
2024-04-08 21页
2024-04-08 40页
2024-04-08 34页
2024-04-08 28页
2024-04-08 28页