|
在C程序中用好宏定义可以提高程序的可移植性、可读性,减少出错。对于嵌入式系统而言,为了达到性能要求,也常用宏作为一种代替函数的方法。例如,用宏求解两个数据对象的较小者。
|
|
|
|
再如,用#define声明一个常数,忽略闰年情况下表示一年有多少秒。
|
|
|
|
通过使用预定义宏可以返回程序的某些状态,以方便交叉编译和调试,每个预定义宏的名称一两个下画线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。例如,用_FUNC_打印函数名、_LINE_打印行号,以定位程序中打印该信息的函数和位置。常用的几个预定义宏如下。
|
|
|
_DATE_当前源文件的编译日期,格式为“Mmm dd yyyy”的字符串字面量
|
|
|
_TIME_当前源文件的编译时间,格式为“hh:mm:ss”的字符串字面量
|
|
|
|
|
_LINE_当前程序行的行号,表示为十进制整型常量
|
|
|
_STDC_若当前编译器符合ISO标准,那么该宏的值为1,否则未定义
|
|
|
_STDC_HOSTED_(C99)如果当前是宿主系统,则该宏的值为1,否则为0
|
|
|