C语言内置宏是一些预定义的宏名,用于在编译时提供一些有用的信息,如当前源文件名、代码行号、函数名等。它们可以帮助我们进行调试、跟踪、日志等操作。C语言内置宏有以下几种:
– `__FILE__`:表示当前源文件的文件名,是一个字符串常量。
– `__LINE__`:表示当前源代码的行号,是一个整型常量。
– `__FUNCTION__`:表示当前所在的函数名,是一个字符串常量。注意,这个宏不是ANSI标准定义的,而是一些编译器提供的扩展,如gcc等。
– `__DATE__`:表示当前源文件被编译的日期,是一个字符串常量,格式为”MMM DD YYYY”,如”Jun 17 2023″。
– `__TIME__`:表示当前源文件被编译的时间,是一个字符串常量,格式为”HH:MM:SS”,如”08:10:45″。
– `__STDC__`:表示当前编译器是否遵循ANSI标准,如果是,则为1,否则为0或未定义。
使用C语言内置宏的例子:
“`c
#include
// 定义一个日志宏,输出信息和所在文件、行号、函数名
#ifdef _DEBUG
#define DEBUGMSG(msg) printf(“%snFile: %s, Line: %d, Function: %sn”, msg, __FILE__, __LINE__, __FUNCTION__)
#else
#define DEBUGMSG(msg)
#endif
// 定义一个求最大值的宏
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
int main()
int a = 10;
int b = 20;
int c = MAX(a, b); // 使用宏求最大值
DEBUGMSG(“Hello, world!”); // 使用宏输出日志
printf(“The max of %d and %d is %dn”, a, b, c);
printf(“This file is compiled on %s at %sn”, __DATE__, __TIME__); // 使用宏输出编译日期和时间
return 0;
“`
输出结果:
“`
Hello, world!
File: main.c, Line: 16, Function: main
The max of 10 and 20 is 20
This file is compiled on Jun 17 2023 at 08:10:45
“`
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/529417.html