C 预处理器 —— __DATE__ # __TIME__ # __FILE__ # __LINE__ # __STDC__ (预处理宏的使用 —— 打印debug信息:)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_42167759/article/details/83656044

预定义宏:

ANSI C 定义了许多宏。在编程中您可以使用这些宏,但是不能直接修改这些预定义的宏。
宏    描述
__DATE__    当前日期,一个以 "MMM DD YYYY" 格式表示的字符常量。
__TIME__    当前时间,一个以 "HH:MM:SS" 格式表示的字符常量。
__FILE__    这会包含当前文件名,一个字符串常量。
__LINE__    这会包含当前行号,一个十进制常量。
__STDC__    当编译器以 ANSI 标准编译时,则定义为 1。

实例演示:

//[root@J01051386 function]# cat line.c 
#include <stdio.h>
int main()
{
	printf("File:%s\n",__FILE__);
	printf("Date:%s\n",__DATE__);
	printf("Time:%s\n",__TIME__);
	printf("Line:%d\n",__LINE__);
	printf("Ansi:%d\n",__STDC__);
	printf("%s\n",__func__); 
}

执行过程以及结果:

[root@J01051386 function]# gcc line.c 
[root@J01051386 function]# ./a.out 
File:line.c
Date:Nov  2 2018
Time:15:33:30
Line:7
Ansi:1
main

预处理宏的使用 —— 打印debug信息:

//定义:debug打印规则//
//[root@J01051386 user_mgr]# cat debug.h 
#define __DEBUG 1 
#if __DEBUG
	#define DEBUG_PRINT(fmt, ...)	printf("Debug-- File: "__FILE__", Line: %05d, Function: %s: " , __LINE__,__FUNCTION__ );printf(fmt, ##__VA_ARGS__);printf("\n")
#else
	#define DEBUG_PRINT(fmt, ...)
#endif
//引用:使用.h文件定义的函数//
//执行cat命令
[root@J01051386 user_mgr]# vim io.c +535
//查看到的结果如下显示
535         DEBUG_PRINT("%s\n", sql); //sql的值是select id, name, remark, grouname from user_resource
//执行结果显示: 与定义相对应
Debug-- File: io.c, Line: 00535, Function: readfromdb2: select id, name, remark, grouname from user_resource

猜你喜欢

转载自blog.csdn.net/weixin_42167759/article/details/83656044