我最近将编译器更改为xc16 gcc编译器。这个新编译器没有定义预处理器宏__TIME__
。
我所做的所有研究都引导我解释如何使用__TIME__
以及标准所要求的,但没有关于它是如何工作的。
目前,我使用__TIME__
和__DATE__
在编译时创建标记。这会定期检查,如果它早于服务器上软件上的标记,则服务器会将新软件下载到设备。没有__TIME__
我就无法实现自动更新系统。
我想我需要#define TIME FunctionToGetCurrentTime
的某些内容,但我没有使用time_t now = time(0);
的运气 - 显然我错了,因为这是我第一次尝试写预处理器宏。我只使用#define
作为值。
答案 0 :(得分:4)
假设您使用bash(或其他符合POSIX标准的shell):
添加到您的gcc调用以下
-D __DATE__=$(date "+%Y-%m-%d") -D __TIME__=$(date "+%H:%M:%S")
或日期命令的一些标志组合。
取自pmg评论的标志。如果你不使用实现$()的POSIX兼容shell(我能想到的所有现代版本),你可以使用反引号代替``。