我正在用C开发一个程序,该程序需要包含git存储库中给定分支中最后一次推送的日期和时间,以便对其进行版本控制。
我知道如何从git中获取数据并使用它生成所需格式的版本号。 (https://stackoverflow.com/a/51403241/7114946)
问题是我不知道如何在程序代码中包括它,因为它最终需要在应用程序启动期间“打印”此信息。
我找到了预处理器宏__TIME__
和__DATE__
。我想知道是否还有其他类似的宏来包含某些给定的字符串/数据。
谢谢
编辑:我需要在编译时添加此信息,而不是在将代码上传到git中时。
答案 0 :(得分:3)
您可以在命令行上定义宏:
gcc -DFOO=BAR -c prog.c
行为类似于#define FOO BAR
中的prog.c
。
您可以将其与shell命令插值结合使用,以在其中获取外部程序的输出:
gcc -DGIT_TIMESTAMP="\"$(git whateveryourcommandis)\"" prog.c
(使用转义引号可使宏扩展为字符串文字。)
然后prog.c
可以执行以下操作:
printf("my git timestamp is %s\n", GIT_TIMESTAMP);