注册 登录
编程论坛 C语言论坛

如何把编译时间写入程序

纯蓝之刃 发布于 2021-01-04 13:55, 2915 次点击
使用makefile编译程序,如何将当前编译时间自动存储到编译的程序中?
也就是如何在使用程序的时候可以看到程序的编译时间
12 回复
#2
Knocker2021-01-16 10:41
__TIME__
__DATE__
#3
纯蓝之刃2021-01-16 16:10
我想在程序编译的时候就把程序编译的时间写到程序里,之后就不变了。而不是得到打开程序的时间。
最简单的例子就是如果使用sftp传输文件,得到的文件的日期会变成最新的。我的目的就是虽然新传输文件的日期变了,但程序里还是保留着程序生成时候的日期,并且能够通过字符串等手段得到。
#4
rjsp2021-01-16 21:41
__TIME__、__DATE__ 并不是makefile的,是C/C++的。
它是一个宏,指示编译时的时间,符合你的要求。

程序代码:
#include <stdio.h>

int main( void )
{
    printf( "%s, %s\n", __DATE__, __TIME__ );
}


一个可能的输出是
Jan 16 2021, 22:38:20

只要你不重现编译,那么它就不会变。
#5
rjsp2021-01-16 21:59
https://zh.
#6
zbjzbj2021-01-16 22:13
回复 3楼 纯蓝之刃
用c++方便些,把你的数据以资源的方式编译进exe文件,可以自定义资源格式。
#7
yuma2021-01-17 19:27
不用写进去,好像所有的exe文件都有编译时间。
GMT-格林尼治标准时,北京时间减去8小时。
只有本站会员才能查看附件,请 登录

用这个软件查看:
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2021-1-18 09:13编辑过]

#8
hytc012021-01-17 22:45
楼上正解,PE格式里自带。
#9
yuma2021-01-18 17:25
EXE中自带的编译时间,都是UTC 格林威治时间。

格林威治标准时间(GMT)
地区:英国 皇家格林尼治天文台
时区:UTC/GMT 0 (零时区)
北京时差:现在格林威治时间比北京时间晚8小时
格林威治位于泰晤士河南岸,与北岸城镇通隧道和公路。1423年格洛斯特公爵亨天雷围建了格林尼治公园,在河畔山丘建了镃望塔,后又建造了格林威治皇家天文台。
协调世界时(UTC)
UTC协调世界时即格林威治平太阳时间,是指格林威治所在地的标准时间,也是表示地球自转速率的一种形式,UTC基于国际原子时间。
#10
纯蓝之刃2021-01-20 11:47
回复 7楼 yuma
如果使用ssh在linux和windows互传,得到的时间就是你传输后生成文件的时间,而不是程序原本生成的时间。
#11
yuma2021-01-20 18:45
回复 10楼 纯蓝之刃
校验一下MD5看一下,还是同一个文件么?
可以考虑二进制FTP上传试试。
#12
Knocker2021-01-21 13:31
如果你仅仅是“想在程序编译的时候就把程序编译的时间写到程序里”,那么上面告诉你的方法就可以。如果你指的是目录“文件创建时间”,那么这得用非常规手段,因为这个时间是系统生成的,是保存在mbr分区表中的。
#13
yuma2021-02-11 09:22
编译时间与创建时间、修改时间、访问时间是相互独立的,没有任何关系。图中的时间加8小时(GMT +8)就是真正的编译时间。
1