gpt4 book ai didi

c++ - 您如何确定您正在运行最新的可执行文件?

转载 作者:太空狗 更新时间:2023-10-29 12:27:11 25 4
gpt4 key购买 nike

我经常(重新)编译我正在处理的一些 C(或 C++)文件——顺便说一下,它在没有任何警告的情况下成功了——然后我执行我的程序,结果发现什么都没有改变自从我之前的编译。为简单起见,假设我在源代码中添加了一条指令,将一些调试信息打印到屏幕上,这样我就有了故障的视觉证据:事实上,我编译、执行,但出乎意料的是,屏幕上什么也没有打印出来.

这发生在我有一次错误代码时(我超出了静态数组的范围)。当然,如果您的代码有某种隐藏 错误 (What are all the common undefined behaviours that a C++ programmer should know about?),编译后的代码几乎可以是任何东西。

当我使用一些慢得离谱的网络硬盘驱动器时,这种情况发生了两次——我猜——只是在编译后没有更新我的可执行文件,我一直在运行旧的版本,尽管更新了源。我只是在这里推测,如果这种现象不可能发生,请随时纠正我,但我怀疑它必须对某些进程做些什么waiting for IO .

好吧,当您在错误的目录中执行旧版本时(即:您执行了一些类似,但实际上与您的来源)。

它又发生了,这让我很恼火地问:你如何确保你的可执行文件与你正在处理的源匹配?我应该在主函数中比较源代码和可执行文件的日期字符串吗?我应该在编译之前删除可执行文件吗?我想人们可能会通过 version control 做类似的事情.


注意:我被警告说这可能是一个注定要关闭的主观主题。

最佳答案

只需使用 ol' 良好的版本控制可能性

  1. 在简单的情况下,您可以在代码中添加(任何)可见的版本 ID 并检查它(散列、修订 ID、时间戳)
  2. 如果您的项目有很多依赖文件并且您怀疑生成的代码中的版本比“最新版本”更旧,您还可以(除了,很明显,良好的 makefile-rules)监控每个文件的版本,用于构建代码(依赖于 VCS,但不是那么重的技巧)

关于c++ - 您如何确定您正在运行最新的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956595/

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