记录编译源代码的时间

2023-12-20

我有一个源文件。当我编译代码时,我希望可执行文件能够记住它的构建时间。我想知道是否可能。例如:

 int main(){
    time_t t = ???  // Time when this line is compiled
    //print out value of t in certain format. 
    return t 
 } 

您可以使用__TIME__ and __DATE__宏来获取预处理器运行的时间 http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html。这是一个字符串,所以你需要将其转换为time_t https://stackoverflow.com/questions/321793/date-time-conversion-string-representation-to-time-t从那里。

我整理的一个简单示例:

#include <time.h>
#include <iostream>
#include <cassert>

time_t build_time() {
  static const char *built = __DATE__" "__TIME__;  
  struct tm t;
  const char *ret = strptime(built, "%b %d %Y %H:%M:%S", &t);
  assert(ret);
  return mktime(&t);
}

int main() {
  std::cout << build_time() << std::endl;
}

我有点担心它如何与不同的语言环境交互,所以我快速浏览了最近的 C 标准,发现了以下段落:

__DATE__预处理翻译单元的翻译日期:“Mmm dd yyyy”形式的字符串文字,其中 月份的名称与生成的名称相同asctime函数,并且 dd 的第一个字符是空格字符,如果 值小于 10。如果翻译日期不可用,则 应提供实现定义的有效日期。

asctime非常清楚的是:

...月份的缩写是 “一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、 “十一月”和“十二月”...

But %b of strptime() says:

%b 或 %B 或 %h

月份名称根据当前语言环境,缩写为 形式或全名。

因此,您需要注意,这是对运行时区域设置的设置进行的假设。

(理论上你可以写一个constexpr在 C++11 中编译时需要一两个函数来执行此操作,但这至少可以说是很重要的!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录编译源代码的时间 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • sbt 使用不同选项编译任务

    我有一个基本的 sbt 项目 我想用相同的源文件打包两个 jar 但使用不同的选项进行编译 因此 一个项目 2 个编译 但具有不同的选项 scalacOptions 和 2 个 jar 作为输出 我不想执行 sbt 两次 更改选项 有人有想
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • MPAndroidChart,如何删除小数百分比并且不显示低于10的百分比?

    我在用MPAndroid图表 https github com PhilJay MPAndroidChart我有两个问题 MPAndroid 饼图 去除小数百分比 饼图上不显示小于 10 的值 但显示切片 只是对于低于 10 的百分比不应显
  • PayPal CreateRecurringPaymentsProfile 账单频率

    我已经设法让我的网站与 paypal billing CreateRecurringPaymentsProfile 一起使用 但是我对以下字段感到困惑 计费周期和计费频率 如果我将第一个设置为每月 第二个设置为 12 希望它每月向我的客户收
  • 在 Area2D 中覆盖 KinematicBody2D 运动?

    I m trying to create a windy area within which the player would be pushed continuously to the left lt 到目前为止 这就是我想出的Windy
  • 将 Oracle 的时间戳转换为纪元中的秒数

    我在 Oracle 数据库的表中存储了一个时间戳 例如 01 03 12 16 13 33 000000000 我想将其转换为自 Unix Epoch 以来的秒数以在查询中返回 最简单的方法是什么 编辑 哦 我需要时间戳精度 不能依赖这里的
  • Swift:创建 UIImage 数组

    使用 Swift 我尝试为简单的动画创建 UIImage 对象数组 上下文帮助animationImages内容为 数组必须包含 UI Image 对象 我尝试按如下方式创建所述数组 但似乎无法获得正确的语法 var logoImages
  • 如何将 CSS 样式应用到元素?

    我是 CSS 新手 不是程序员 我了解什么是类 也了解什么是 div 但我似乎找不到的是如何在特定元素 例如我网站的 div 上设置样式 在你的 HTML 中 div class myClass Look at me div 在你的 CSS
  • 通过蓝牙将 OBDSim 连接到 Windows 上的 Torque

    我正在尝试在 Win7 上安装 OBDSim 但遇到了一些麻烦 我的最终目标是将 OBDSim 作为蓝牙 ELM327 OBDII 模拟器运行 并使用 Android 设备上的 Torque 应用程序连接到它 我在 youtube 上观看了
  • 如何调试从玉石打印对象

    如何调试从玉石打印对象 例如console log 在 JavaScript 中 您可以使用以下命令进行调试console log from jade像这样 div console log the object you want to lo
  • 如何在 Dart 中对末尾为空对象的 List 进行排序

    开始着手 Flutter 进行一个研究项目 我想知道如何对文件列表进行排序 事实上 我的程序有一个包含 4 个文件的列表 初始化如下 List
  • Python VLC - 获取位置轮询率解决方法

    我使用 Python VLC 在 pyqt 中构建自定义播放应用程序 我画了一个漂亮的自定义滑块来跟踪视频 但遇到了一些恼人的问题 无论我多久告诉我的滑块更新一次 它都会出现故障 每 1 4 秒左右跳跃一次 并且看起来不稳定 只是时间线 而
  • SVG textPath 上的希伯来语文本仅在 Safari 中反转

    将希伯来语文本放在 SVG textPath 上时 仅在 Safari 中会反转 macOS ventura 13 2 Safari 16 3 在 Firefox 和 Chrome 中都可以 不在路径上的文本总是可以的 此外 我可以使用 b
  • 防止使用 HTML 锚点播放 MP3 文件

    如何下载 MP3 链接而不是 在浏览器中 播放 我尝试将目标更改为空白 但这只是在新窗口中打开了播放器 您无法通过修改链接来做到这一点 您必须让提供该文件的 HTTP 服务器发送一个Content Type 应用程序 八位字节流 据推测 它
  • 将所有列中的值替换为该列的值

    如何用该列的编号替换所有列中的所有 1 我已经可以逐列执行此操作 输出 输出 3 1 3 3 输出 输出 4 1 4 4 输出 输出 5 1 5 5 etc 但我觉得自己像个傻瓜一样为每一个专栏写下这些内容 应该有一种方法可以同时完成所有这
  • 使用 IN 从 sqlite 数据库中删除

    我正在使用这样的记录 ID 从 sqlite 数据库中删除 这dirID是一个 ID 数组 Dim i As Integer 0 Dim conn As New SQLiteConnection Data Source DBPath Dim
  • Hadoop字数统计:接收以字母“c”开头的单词总数

    这是 Hadoop 字数统计 java map 和 reduce 源代码 在地图函数中 我已经可以输出所有以字母 c 开头的单词以及该单词出现的总次数 但我想做的只是输出总数以字母 c 开头的单词 但我在获取总数方面有点困难 任何帮助将不胜
  • 在 Clojure 中捕获系统/输出

    我正在使用一个将文本输出到控制台的 Java 包 我需要捕获字符串中的文本 但我不知道如何执行此操作 从查看 Clojure 文档看来 我所要做的就是将 java 调用包装在with out str但这对我不起作用 最小代码示例 如果我尝试
  • 写入没有段寄存器的地址

    我知道这段代码实际上会将数据写入 ds 100h mov 100h ax 但我怎样才能写入线性地址100H直接不使用任何段寄存器作为段基址 没有办法绕过段寄存器 每个内存访问都与某个段寄存器相关 如果要写入绝对地址 请首先向段寄存器加载适当
  • 多个 apache 根进程

    今天我注意到 当从我们的网络服务器发出请求时 速度相当慢 我开始研究它 发现了大量 root 拥有的 apache 进程 我不确定这实际上是导致事情变慢的原因 但无论如何 它看起来并不好 问题是 我不知道从这里做什么 如何找出为什么有这么多
  • WinRT 能够运行 Win 7 和 8 桌面应用程序吗?

    我读到了很多关于它的不同意见 但 WinRT 是像 Win 7 和 8 一样的实际桌面操作系统吗 您能够运行功能齐全的桌面应用程序和游戏吗 WinRT 不是桌面或操作系统 而是一个 API 就像传统的winapi一样 它与 winapi 有
  • 记录编译源代码的时间

    我有一个源文件 当我编译代码时 我希望可执行文件能够记住它的构建时间 我想知道是否可能 例如 int main time t t Time when this line is compiled print out value of t in