gpt4 book ai didi

ISO 8601 :2004 中的 C 预处理器 __TIMESTAMP__

转载 作者:太空狗 更新时间:2023-10-29 16:43:40 25 4
gpt4 key购买 nike

如何在 ISO 8601:2004 中替换 __TIMESTAMP__

__TIMESTAMP__

Sat Jul  6 02:50:06 2013

对比

__TIMESTAMP_ISO__

2013-07-06T00:50:06Z

最佳答案

噢,乐观主义者!您不会真的期望一个标准会关注另一个标准,对吗?如您所知,__TIMESTAMP__ 定义不在标准 C 中。拥有像您建议的 __TIMESTAMP_ISO__ 格式会很棒(您总是想要祖鲁时间,还是让本地时区偏移更好?),但坦率地说,最简单的方法它添加的可能是 GCC 和 Clang 等的补丁。

您可以按照 user1034749 的建议尝试使用 asctime() 进行修改的 answer ,但我不想那样做。

在 GCC 4.8.1 中 manual ,有一个有趣的警告抑制:

-Wno-builtin-macro-redefined
Do not warn if certain built-in macros are redefined. This suppresses warnings for redefinition of __TIMESTAMP__, __TIME__, __DATE__, __FILE__, and __BASE_FILE__.

这表明您可以尝试:

gcc ... -Wno-builtin-macro-redefined -D__TIMESTAMP__=$(date +'"%Y-%m-%dT%H:%M:%S"') ...

(请注意从 date 中获取字符串所必需的象形文字,并用双引号括起来。)但是,某些早期版本的 GCC 不支持该选项;我不记得以前见过它。您仍然可以重新定义 __TIMESTAMP__:

$ gcc -std=c99   -Wall -Wextra  -O xx.c -o xx
$ ./xx
Fri Jul 5 19:56:25 2013
$ gcc -std=c99 -Wall -Wextra -D__TIMESTAMP__=$(date +'"%Y-%m-%dT%H:%M:%S"') -O xx.c -o xx
<command-line>: warning: "__TIMESTAMP__" redefined
$ ./xx
2013-07-05T20:10:28
$

不是很漂亮,但它可以工作......哦,只是为了记录,源代码是(微不足道的):

#include <stdio.h>

int main(void)
{
printf("%s\n", __TIMESTAMP__);
return 0;
}

关于ISO 8601 :2004 中的 C 预处理器 __TIMESTAMP__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17498556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com