Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Visual Studio C+中打印日期和时间+;建造?_C++_Visual Studio_Datetime_Compiler Construction - Fatal编程技术网

C++ 在Visual Studio C+中打印日期和时间+;建造?

C++ 在Visual Studio C+中打印日期和时间+;建造?,c++,visual-studio,datetime,compiler-construction,C++,Visual Studio,Datetime,Compiler Construction,为了构建的目的,我将如何打印日期和时间。Ie:当我的应用程序的控制台启动时,我希望执行以下操作: 我认为这对于所有应用程序来说都是一个非常有用的函数,对于程序员来说,尤其是在团队环境中 在C++中使用VisualStudio 2008有一个简单的方法来实现这一点。谢谢。您可以使用宏\uuuuuuuuuuu和\uuuuuuuuu日期。请注意双下划线。这些文件在编译时展开,因此您将获得保存在文件中的最后一次编译时间。实现这一点的一种方法是使用内置的\uuuuuuuu日期和\uuu时间宏。来自MSDN

为了构建的目的,我将如何打印日期和时间。Ie:当我的应用程序的控制台启动时,我希望执行以下操作:

我认为这对于所有应用程序来说都是一个非常有用的函数,对于程序员来说,尤其是在团队环境中


<>在C++中使用VisualStudio 2008有一个简单的方法来实现这一点。谢谢。

您可以使用宏
\uuuuuuuuuuu
\uuuuuuuuu日期
。请注意双下划线。这些文件在编译时展开,因此您将获得保存在文件中的最后一次编译时间。

实现这一点的一种方法是使用内置的
\uuuuuuuu日期
\uuu时间
宏。来自MSDN(针对VS 2005):

\uuuuu日期\uuuuuu
: 当前源文件的编译日期。日期是格式为Mmm dd yyyy的字符串文字。月名Mmm与库函数asctime在TIME.H中声明的日期相同

\uuuuu时间\uuuuuuu
: 当前源文件的最近编译时间。时间是格式为hh:mm:ss的字符串文字


使用预处理器的
\uuuuu日期
\uuuu时间

printf("Binary build date: %s @ %s\n", __DATE__, __TIME__);
为了确保包含此代码的cpp文件已真正编译,我使用文件的touch实用程序作为预构建步骤:touch file.cpp

Touch.bat:

@copy nul: /b +%1 tmp.$$$
@move tmp.$$$ %1

请注意,时间和日期宏只有在包含它们的特定文件保证在每次生成期间编译时才能按需要工作

与Virne的回答类似,我创建了一个名为“BuildDate.h”的简单头文件,其中包含以下内容:

#define BUILD_DATE __DATE__ " " __TIME__
我在预构建事件中使用触摸命令触摸文件:

touch.exe BuildDate.h
然后,我将头文件包括在我想要访问
BUILD\u DATE
字符串的任何代码中。例如:

#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);

似乎至少在VS 2005中,依赖关系是在预构建事件之前计算的,所以我在后构建事件中只做了
del$(OutDir)\file.obj
。我尝试了一系列不同的方法,这是一种最终对我有效的方法。我使用
del$(IntermediateOutputPath)\$(TargetName).obj
-按预期工作。通常,您会在构建中包含一个版本号。是的,这是一个功能,不是一个bug,我们不能期望它以任何其他方式工作!如果没有编译任何内容,编译器应该如何标记日期:-)
#include "BuildDate.h"
...
logger->Log("Build Date: " BUILD_DATE);