我想执行一个printf()来显示当前正在执行的代码上次编译的时间。C/C++是否提供了一个宏,使您在编译期间解析为时间戳?
printf()
93ze6v8z1#
可以使用__DATE__和__TIME__。
__DATE__
__TIME__
fxnxkyjh2#
16.8预定义宏名称[cpp.predefined]1下列宏名称由实现定义:__LINE__当前源线的行号(十进制常量)。__FILE__源文件的假定名称(字符串文本)。__DATE__源文件的转换日期(“Mmm dd yyyy”形式的字符串文字,其中月份的名称与asctime函数生成的月份名称相同,如果dd的值小于10,则其第一个字符为空格字符)。如果翻译日期不可用,则提供实现定义的有效日期。__TIME__源文件的转换时间(格式为“hh:mm:ss”的字符串文字,如asctime函数生成的时间)。如果转换时间不可用,则提供实现定义的有效时间。__STDC____STDC__是否是预定义的,如果是,它的值是什么,都是实现定义的。__cplusplus名称__cplusplus在编译C++翻译单元时定义为值199711L。您需要__TIME__和__DATE__。
__LINE__
__FILE__
__STDC__
__cplusplus
wd2eg0qa3#
使用宏__DATE__和__TIME__
hpxqektj4#
如果您使用的是gcc预处理器,那么您可以在__TIME__和__DATE__宏中找到所需的内容。引用自GNU C预处理器文档:日期此宏扩展为一个字符串常量,用于描述预处理器运行的日期。字符串常量包含11个字符,看起来像“Feb 12 1996”。如果一个月中的某一天小于10,则在左侧填充一个空格。...时间此宏扩展为一个字符串常量,用于描述预处理器的运行时间。字符串常量包含八个字符,看起来像“23:59:01”。
anauzrmj5#
使用脚本或创建应用程序来生成包含构建日期和时间的C++源文件。将此文件添加到生成设置中。程序的其他部分可以引用此文件中的数据。这种技术对于在程序中嵌入版本号也很有用。构建过程可以控制版本号。
fjaof16o6#
看起来编译器应该提供一个__TIMESTAMP__宏,它应该能满足您的需要。
__TIMESTAMP__
dohp0rv57#
我正在使用这个向DbgView发送消息:
OutputDebugStringA(("ATTACHED VERSION: "+ string(__DATE__) + " " + string(__TIME__)).c_str());
6yt4nkrj8#
您可以将以下字符串添加到CMakeLists.txt字符串(TIMESTAMP COMPILE_TIME %Y%m%d-%H%M%S)和你需要添加下面的字符串到你的“ProjectName.h.in“文件#define TIMESTAMP @COMPILE_TIME@那么当你编译你的项目时,下面的字符串将被写入你的“ProjectName. h”
8条答案
按热度按时间93ze6v8z1#
可以使用
__DATE__
和__TIME__
。fxnxkyjh2#
16.8预定义宏名称[cpp.predefined]
1下列宏名称由实现定义:
__LINE__
当前源线的行号(十进制常量)。__FILE__
源文件的假定名称(字符串文本)。__DATE__
源文件的转换日期(“Mmm dd yyyy”形式的字符串文字,其中月份的名称与asctime函数生成的月份名称相同,如果dd的值小于10,则其第一个字符为空格字符)。如果翻译日期不可用,则提供实现定义的有效日期。__TIME__
源文件的转换时间(格式为“hh:mm:ss”的字符串文字,如asctime函数生成的时间)。如果转换时间不可用,则提供实现定义的有效时间。__STDC__
__STDC__
是否是预定义的,如果是,它的值是什么,都是实现定义的。__cplusplus
名称__cplusplus
在编译C++翻译单元时定义为值199711L。您需要
__TIME__
和__DATE__
。wd2eg0qa3#
使用宏
__DATE__
和__TIME__
hpxqektj4#
如果您使用的是gcc预处理器,那么您可以在
__TIME__
和__DATE__
宏中找到所需的内容。引用自GNU C预处理器文档:
日期
此宏扩展为一个字符串常量,用于描述预处理器运行的日期。字符串常量包含11个字符,看起来像“Feb 12 1996”。如果一个月中的某一天小于10,则在左侧填充一个空格。
...
时间
此宏扩展为一个字符串常量,用于描述预处理器的运行时间。字符串常量包含八个字符,看起来像“23:59:01”。
anauzrmj5#
使用脚本或创建应用程序来生成包含构建日期和时间的C++源文件。将此文件添加到生成设置中。程序的其他部分可以引用此文件中的数据。
这种技术对于在程序中嵌入版本号也很有用。构建过程可以控制版本号。
fjaof16o6#
看起来编译器应该提供一个
__TIMESTAMP__
宏,它应该能满足您的需要。dohp0rv57#
我正在使用这个向DbgView发送消息:
6yt4nkrj8#
您可以将以下字符串添加到CMakeLists.txt字符串(TIMESTAMP COMPILE_TIME %Y%m%d-%H%M%S)
和
你需要添加下面的字符串到你的“ProjectName.h.in“文件#define TIMESTAMP @COMPILE_TIME@
那么当你编译你的项目时,下面的字符串将被写入你的“ProjectName. h”
define TIMESTAMP 20230220-203532