You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译时捕获编译环境信息 优化C程序版本显示代码需求

编译时环境信息捕获与版本输出优化

当前版本输出代码

void v_version() /* Display version information */
{
   fprintf(stdout, "%s: Version %s %s", FILENAME, VERSION, COMMIT_ID);
   if (__DATE__[4] == ' ') fprintf(stdout, " 0"); else fprintf(stdout, " %c", __DATE__[4]);
   fprintf(stdout, "%c %c%c%c %s %s", __DATE__[5],
      __DATE__[0], __DATE__[1], __DATE__[2], &__DATE__[9], __TIME__ );
   fprintf(stdout, " (build: %s)\n", BUILD );
}

输出示例

my-program: Version 0.8 [Commit ID: 5c18dcf] 14 Oct 23 22:26:41 (build: 0092)

已优化的版本输出代码

void v_version() /* Display version information */
{
   fprintf(stdout, "%s: Version %s %s", NAME, VERSION, COMMIT_ID);
   fprintf(stdout, " %02d %3.3s %s %5.5s", atoi(&__DATE__[4]), &__DATE__[0], &__DATE__[9], __TIME__ );
   fprintf(stdout, " (build: %s)\n", BUILD );
}

需求说明

希望在版本信息中尽可能多地捕获以下编译时详情:

  • 操作系统信息
  • 编译命令行参数(例如-fcommon -Wall -pedantic -std=gnu99)
  • 编译器版本
  • 编译系统的处理器架构

已知多数UNIX/Linux系统可通过Makefile定义宏实现,但需避免这种方式,确保即使不使用Makefile编译源码,也能自动捕获上述信息。

内容的提问来源于stack exchange,提问作者Mike T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:40:05