====== 预定义宏(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__%%用于记录编译的时间,在整个编译期间,这两个值保持不变。 {{tag>C语言}}