响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:c:tips:predifined_macros

预定义宏(Predifined macros)

标准C预定义了一些宏,宏名以双下划线开始,以双下划线结束。这些宏不能用#undef取消定义。

__LINE__ 当前行在源文件中的行号(十进制表示)。
__FILE__ 当前的源文件名。
__DATE__ 编译时的日历日期(calendar date),由asctime()产生。
__TIME__ 编译时的时间,由asctime()产生。
__STDC__ 当且仅当编译器符合ISO标准时(标准C),值为1。
__STDC_VERSION__ C95的值为199409L,C99的值为199901L,其他情况的值为未定义。
__STDC_HOSTED__ (C99新增)如果编译器是hosted实现,值为1;如果是freestanding实现,则为0。
__STDC_IEC_559__ (C99新增)如果浮点实现遵从IEC 60559,值为1;其他情况的值为未定义。
__STDC_IEC_559_COMPLEX__ (C99新增)如果复数实现遵从IEC 60559,值为1;其他情况的值为未定义。
__STDC_ISO_10646__ (C99新增)wchar_t遵从ISO 10646标准的年月,用long整型常量yyyymmL表示。其他情况的值为未定义。

__LINE__和__FILE__在调试程序时很有用。如:

        if (a != b)
                printf("error: line %d, file %s\n", __LINE__, __FILE__);

__DATE__和__TIME__用于记录编译的时间,在整个编译期间,这两个值保持不变。

computer/c/tips/predifined_macros.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1