Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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++ 宏\uuuu时间戳\uuuu被卡住_C++_Timestamp - Fatal编程技术网

C++ 宏\uuuu时间戳\uuuu被卡住

C++ 宏\uuuu时间戳\uuuu被卡住,c++,timestamp,C++,Timestamp,您好,我目前正在从事一个项目,该项目有自己的日志系统,是几年前编写的,它使用\uuuuuu TIMESTAMP\uuuu打印当前日期和时间。我注意到有时候,这个宏会被卡住,并且一次又一次地返回相同的值。例如,时间是12:37,宏一直返回上一次运行的时间11:16。 \uuuuu TIMESTAMP\uuuuu是否有一部分内存在每次调用前都需要释放?由于它已经使用多年,没有人注意到,这可能是我的计算机出了问题吗?您不能用\uuuuuuu时间戳\uuuuuuu打印当前日期和时间,因为它是预处理器杂注

您好,我目前正在从事一个项目,该项目有自己的日志系统,是几年前编写的,它使用
\uuuuuu TIMESTAMP\uuuu
打印当前日期和时间。我注意到有时候,这个宏会被卡住,并且一次又一次地返回相同的值。例如,时间是12:37,宏一直返回上一次运行的时间11:16。
\uuuuu TIMESTAMP\uuuuu
是否有一部分内存在每次调用前都需要释放?由于它已经使用多年,没有人注意到,这可能是我的计算机出了问题吗?

您不能用
\uuuuuuu时间戳\uuuuuuu
打印当前日期和时间,因为它是预处理器杂注。它将始终显示项目编译时间,而不是当前时间。用于获取当前时间。

您不能使用
\uuuu时间戳\uuuu
打印当前日期和时间,因为它是预处理器杂注。它将始终显示项目编译时间,而不是当前时间。用于获取当前时间。

根据@SebastianPhilipp的评论,
\uuuuu TIMESTAMP\uuuu
表示编译可执行文件的时间。另一种选择是,我建议查看函数,如
ctime()
asctime()

,根据@SebastianPhilipp的评论,
\uuuu TIMESTAMP\uuu
表示编译可执行文件的时间。作为替代方案,我建议查看函数,例如
ctime()
astime()

TIMESTAMP是一个预处理器宏,它以Ddd Mmm Date hh::mm::ss yyy的形式扩展到当前时间(在编译时),您可以获得更多信息

这是一个日志示例

static char* time_to_string(time_t t, char* buf, size_t bufsize) 
{
            struct tm tm;
            strftime(buf, bufsize, "%Y-%m-%d %H:%M:%S", localtime_r(&t, &tm));
            return buf;
}

extern "C" void log_printf(FILE* stream, const char* format, ...)
{
        char t[32];

        flockfile(stream);

        fprintf(stream, "[%s] ", time_to_string(time(NULL), t, sizeof(t)));

        va_list va;
        va_start(va, format);
        vfprintf(stream, format, va);
        va_end(va);

        funlockfile(stream);
}

TIMESTAMP是一个预处理器宏,以Ddd Mmm Date hh::mm::ss yyyy的形式扩展到当前时间(编译时),您可以获得更多信息

这是一个日志示例

static char* time_to_string(time_t t, char* buf, size_t bufsize) 
{
            struct tm tm;
            strftime(buf, bufsize, "%Y-%m-%d %H:%M:%S", localtime_r(&t, &tm));
            return buf;
}

extern "C" void log_printf(FILE* stream, const char* format, ...)
{
        char t[32];

        flockfile(stream);

        fprintf(stream, "[%s] ", time_to_string(time(NULL), t, sizeof(t)));

        va_list va;
        va_start(va, format);
        vfprintf(stream, format, va);
        va_end(va);

        funlockfile(stream);
}

我们可以看到一些代码吗?Afaik
\uuuuuuuuuu时间戳\uuuuuuu
不打印当前时间,但打印编译可执行文件的时间。我们可以看到一些代码吗?Afaik
\uuuuuuu时间戳\uuuuuu
不打印当前时间,但打印编译可执行文件的时间。