📅  最后修改于: 2023-12-03 15:30:14.353000             🧑  作者: Mango
在C语言中,预定义宏是在程序编译时由编译器自动定义的,可以提供有关编译环境及系统的信息。以下是常用的预定义宏:
__FILE__宏返回当前源文件的文件名。
示例:
#include <stdio.h>
int main() {
printf("当前文件名是:%s\n", __FILE__);
return 0;
}
输出结果为:
当前文件名是:test.c
__LINE__宏返回当前源文件的行号。
示例:
#include <stdio.h>
int main() {
printf("当前行号是:%d\n", __LINE__);
return 0;
}
输出结果为:
当前行号是:4
__DATE__宏返回当前编译时间的日期,格式为"MMM DD YYYY"(月份缩写+日期+年份)。
示例:
#include <stdio.h>
int main() {
printf("当前日期是:%s\n", __DATE__);
return 0;
}
输出结果为:
当前日期是:Oct 20 2022
__TIME__宏返回当前编译时间的时间,格式为"HH:MM:SS"(小时+分钟+秒)。
示例:
#include <stdio.h>
int main() {
printf("当前时间是:%s\n", __TIME__);
return 0;
}
输出结果为:
当前时间是:05:20:00
__STDC__宏返回一个整数,表示符合ISO/IEC 9899标准的编译器。
示例:
#include <stdio.h>
int main() {
#ifdef __STDC__
printf("符合C标准\n");
#else
printf("不符合C标准\n");
#endif
return 0;
}
输出结果为:
符合C标准
__cplusplus宏用于C++,在C++程序中定义为1,表示C++程序。
示例:
#include <iostream>
int main() {
#ifdef __cplusplus
std::cout << "这是一个C++程序" << std::endl;
#else
printf("这不是一个C++程序\n");
#endif
return 0;
}
输出结果为:
这是一个C++程序
以上就是常用的预定义宏。通过使用预定义宏,可以使程序更加灵活,但是在使用时必须谨慎,避免定义同名变量或函数而导致的错误。