gpt4 book ai didi

c - 在编译时获取纪元时间

转载 作者:行者123 更新时间:2023-11-30 15:46:38 25 4
gpt4 key购买 nike

上下文:我正在编写一种不平凡的客户端-服务器 UDP 多播程序,并将其部署在一些无线节点上。部署方法是我编写的一个脚本,它对这些节点所在的网络进行广播 ping,获取节点列表(基于 IP 地址),部署我的包并安装它。我注意到有时在部署时并未检测到所有节点,并且未安装我正在开发的最新软件包。最终,可能会出现这样的情况:在一个节点上运行的服务器比希望与服务器通信的客户端更旧。因为服务器获取数据包,并根据该数据包中的条目分配内存,所以如果结构发生变化,服务器通常会因段错误而崩溃。作为一种解决方案,我正在考虑在客户端和服务器之间发送的数据包中实现版本号,这样如果服务器/客户端读取版本号不同的数据包(或者由于重构而成为垃圾)数据包),该数据包将被忽略,并更新日志,或者将紧急数据包发送给原始发送者。

因此,我试图想出在编译时获取此“版本号”的最佳方法,该版本号可以作为 #define 位于 header 中。我查找了 __time__ 预处理器宏,但它是字符串的形式。有没有办法在编译时获取纪元时间,以便我可以将其位掩码为无符号整数(如果我正确地考虑的话,它应该只在 136 年后滚动)?

抱歉,如果我不清楚。

最佳答案

这取决于您的构建系统,但如果您使用 gmake,则可以做类似的事情:

CXX_TIME = -DBUILDTIME=$(shell python -c "import time; print( int( time.time() ) )" )

将其添加到其他编译器选项中,然后使用代码中的宏 BUILDTIME

(这假设您已经在路径中安装了 Python。如果没有,您可以安装它,或者执行类似的操作您已安装的工具。)

关于c - 在编译时获取纪元时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215846/

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