欢迎来到天天文库
浏览记录
ID:55631205
大小:22.50 KB
页数:3页
时间:2020-05-21
《C语言的伪指令宏.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、伪指令宏宏续行符:宏的用法:当源文件被预处理器处理时,每遇到该宏标识符,预处理器便在宏的所在处将宏扩展为宏体。l简单宏定义格式:#define宏表示符号宏体例:#defineWIN_MAIN_HS0l参数宏定义格式:#define宏标识符(形参0,形参1,形参2,….)宏体许多库函数是用参数宏写的。参数宏和函数的区别:1、形参表中没有类型说明符;2、参数宏在时空的开销上比函数都要小。预处理器在处理参数宏时使用两遍宏展开:1、展开宏体;2、对展开后的宏体用实参替换形式参数;例:#defineDe
2、bugNumber(x,y,value)Gotoxy(x,y,BYTE_DISPLAY); PrintfDec(value)l宏释放用于释放原定义的宏标识符。定义格式:#undef宏标识符例:#defineROW_COUNT18…..#undefROW_COUNT#defineROW_COUNT20l条件宏定义先测试是否定义过某宏标识符,然后决定如何处理。定义格式:格式一:#ifdef宏标识符#undef宏标识符#define宏标识符宏体#else#define宏标识符宏体#endif格式二
3、:#ifndef宏标识符#define宏标识符宏体#else#undef宏标识符#define宏标识符宏体#endif例子:l预定义宏预处理器的预定义宏一般有:__D-ATA__:当时的日期;__TIME__:当时的日期;__FILE__:所在文件名;__LINE__:所在文件的行数;__STDC__:当与ANCIC相兼容时,它定义宏体是1。l宏体中使用转义符#和合并符##转义符#定义参数宏时,在宏体中允许将#号加于参数之前。此时的#号为预处理器的转义符。在宏扩展时将#后的参数转义为字符串。例:
4、#definePRINTF(x)printf(#x“=%d”,x)在源程序中有PRINTF(Age);经预编译器扩展为printf(“Age””=%d”,Age);也即:printf(“Age=%d”,Age);合并符##在宏体内,合并符##将两边的单词合并为一个单词。合并符两边允许有任意个空格符。预处理器在处理时,将这些空格符和##一并删除,使得合并符两边的单词合并为一。例:#definePRINTF(index)printf(“Age”#index“=%d”,Age##ind
5、ex);PRINTF(2);//等价于 printf(“Age2=%d”,Age2);l条件编译伪指令写给编译器的,指示编译器只编译满足条件的那部分。预处理器的作用是,稍描并扩展宏,其他内容不动,留给编译器处理。定义格式:#if(条件表达式1)….#elif(条件表达式2)….#elif(条件表达式n)…#else….#endif条件表达式允许用宏标识符。l#pragma伪指令l#line伪指令l
此文档下载收益归作者所有