【C语言】使用__DATE__宏、__FILE__宏和__LINE__宏生成调试信息


一、前言


二、功能实现

2.1年份信息生成

#define YEAR ((((((((unsigned int)(__DATE__ [7 ] - '0')) * 10) +      \
                    (unsigned int)(__DATE__ [8 ] - '0')) * 10) +      \
                    (unsigned int)(__DATE__ [9 ] - '0')) * 10) +      \
                    (unsigned int)(__DATE__ [10] - '0'))

2.2月份信息生成

#define MONTH   ( __DATE__ [2] == 'n' ? (__DATE__ [1] == 'a' ? 1 : 6) \
                : __DATE__ [2] == 'b' ? 2                             \
                : __DATE__ [2] == 'r' ? (__DATE__ [0] == 'M' ? 3 : 4) \
                : __DATE__ [2] == 'y' ? 5                             \
                : __DATE__ [2] == 'n' ? 6                             \
                : __DATE__ [2] == 'l' ? 7                             \
                : __DATE__ [2] == 'g' ? 8                             \
                : __DATE__ [2] == 'p' ? 9                             \
                : __DATE__ [2] == 't' ? 10                            \
                : __DATE__ [2] == 'v' ? 11 : 12)

2.3日期信息生成

#define DAY   ((((__DATE__ [4] == ' ') ? (0) :                        \
                 (__DATE__ [4] - '0')) * 10) + (__DATE__ [5] - '0'))

2.4文件名信息生成

#if 0 /* 不同编译器生成文件名路径时,使用的路径间隔符不同 */
#define FILENAME (strrchr((__FILE__), '/')) ? (strrchr((__FILE__), '/') + 1) : (__FILE__)
#else
#define FILENAME (strrchr((__FILE__), '\\')) ? (strrchr((__FILE__), '\\') + 1) : (__FILE__)
#endif

2.5文件行信息生成

#define FILELINE    (__LINE__)

2.6实现效果

printf ("YEAR = %04d\r\nMONTH = %02d\r\nDAY = %02d\r\nFILENAME = %s\r\nFILELINE = %d\r\n", \
         YEAR, MONTH, DAY, FILENAME, FILELINE);

三、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值