use*_*898 0 c++ fopen visual-c++ c-preprocessor
我正在使用Visual Studio 2008 Express,我有这个日志代码:
fprintf(fp,"%s %s %s %s %d %s\n", pType, __DATE__, __TIME__, pFileName, lineNo, pMsg.c_str());
fflush(fp);
有时,如果我不删除日志并且只是继续添加日志,__TIME__宏只会保持打印旧时间而不是当前时间.
我正在使用以下代码打开该文件
if(pfileName != NULL)
{
    fp = fopen(pfileName, "a+");
    if(fp != NULL)
        fseek(fp, 0, SEEK_END);
}
问题是你没有进行重建.
默认情况下,Visual Studio仅构建/编译自上次编译项目以来已更改(已修改)的源文件.这是为了节省时间,这是一个非常有用的功能.如果你想确保重新编译源文件,无论它们自上次构建后是否已被更改,你必须指示VS 重建你的代码(或者通过歌曲和舞蹈来做一个干净的,然后建立你的项目).
为什么重要的原因是__TIME__预处理宏展开预处理过程中与当前时间(编译之前就在这里发生的,我们的目的至少).它在您第一次编译代码时得到了扩展,除非您修改源文件或重新编译(重建)它,否则永远不会更改.
这可能不是您在日志记录功能中寻找的内容.您需要打印当前系统时间,而不是编译时间.您可以使用该函数来获取它 - 使用它,确保包含在源文件的顶部.或者另外,如果你已经包括,你可以调用函数来一补结构,让你当前的时间和日期.time<time.h><windows.h>GetSystemTimeSYSTEMTIME
| 归档时间: | 
 | 
| 查看次数: | 479 次 | 
| 最近记录: |