常用宏使用
宏替换是预处理命令的一部分,它在预编译阶段被替换。可以用gcc -E test.c > xxx.c
命令来获取宏替换后的文件到xxx.c中。打开后会发现此文件很大,而且也看不懂。别着急,翻到文件末尾,你就会发现宏替换后的源程序了。宏定义可以分为三类。
- 用户自定义的宏如
#define MAXBUFF_LEN 1024
。 - c标准定义的宏如
__LINE__
。 - 第三种是编译器定义的宏如
__COUNTER__
。
我们今天要谈论的就是c99标准中的宏定义(c99标准的6.10.3节对宏替换做了讲解)。宏替换的好处当然不用说了,弊端在const关键字的用法一节也有提到。下面我们就一起好好聊聊它的好,看看它的美。
一些获取信息的宏
__DATE__
获取日期(格式:Mmm dd yyyy)__TIME__
获取时间(格式:hh:mm:ss)__FILE__
获取文件名__LINE__
获取当前行的行号__func__
获取当前的函数名(没有笔误,是小写func.其次,它也并非宏,下面会介绍它).
他们的用法跟我们自定义宏的用法一样。其中__DATE__
、__TIME__
、__FILE__
的内容是字符串,__LINE__
是无符