GNUC宏 __DATE__ 日期转换

在GNUC编译器环境下,有一些比较方便的宏,例如:

  • __FILE__: 当前源文件名称
  • __FUNCTION__: 当前函数名称
  • __LINE__: 当前行号
  • __TIME__: 编译时间
  • __DATE__: 编译日期

其中__DATE__字符串格式是混合形式

例如 2022-07-03 会输出为 Jul 3 2022

这种形式不太方便阅读,一般会习惯转换为 2022-07-03 这种格式,可以使用以下宏来进行转换,这样转换在编译器就已经转换完成,不会引入执行问题

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

#define MONTH ((__DATE__ [0] == 'J' && __DATE__ [1] == 'a' && __DATE__ [2] == 'n') ? 1 \
: (__DATE__ [0] == 'F' && __DATE__ [1] == 'e' && __DATE__ [2] == 'b') ? 2 \
: (__DATE__ [0] == 'M' && __DATE__ [1] == 'a' && __DATE__ [2] == 'r') ? 3 \
: (__DATE__ [0] == 'A' && __DATE__ [1] == 'p' && __DATE__ [2] == 'r') ? 4 \
: (__DATE__ [0] == 'M' && __DATE__ [1] == 'a' && __DATE__ [2] == 'y') ? 5 \
: (__DATE__ [0] == 'J' && __DATE__ [1] == 'u' && __DATE__ [2] == 'n') ? 6 \
: (__DATE__ [0] == 'J' && __DATE__ [1] == 'u' && __DATE__ [2] == 'l') ? 7 \
: (__DATE__ [0] == 'A' && __DATE__ [1] == 'u' && __DATE__ [2] == 'g') ? 8 \
: (__DATE__ [0] == 'S' && __DATE__ [1] == 'e' && __DATE__ [2] == 'p') ? 9 \
: (__DATE__ [0] == 'O' && __DATE__ [1] == 'c' && __DATE__ [2] == 't') ? 10 \
: (__DATE__ [0] == 'N' && __DATE__ [1] == 'o' && __DATE__ [2] == 'v') ? 11 : 12)

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值