版权声明:本文为博主原创文章,未经博主允许不得转载。 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