我有一个MFC应用程序,正在向磁盘写入大量对象。
为了理解所写的内容,我想到了通过流插入和.write方法记录所有对<

#pragma once
#ifndef LOGMAGIC
#define LOGMAGIC

    class LogTab
    {
    public:
        static int LogIndentCount;
        LogTab()
        {
            LogIndentCount++;
        }

        ~LogTab()
        {
            LogIndentCount--;
        }
    };

    #define ARINSERT(AR,OBJ) TRACE( "%*s %s\n", LogTab::LogIndentCount, #OBJ); AR << OBJ;
    #define ARWRITE(AR,OBJ,SIZE) TRACE("%*s %s\n", LogTab::LogIndentCount, #OBJ); AR.write(OBJ, SIZE);
#endif


所以我创建了上面的代码片段并将其放在stdafx.h中,但出现以下错误:


  错误1错误LNK2001:无法解析的外部符号“ public:static int
  LogTab :: LogIndentCount“(?LogIndentCount @ LogTab @@ 2HA)


我究竟做错了什么?
有没有更好的方法来实现自己的目标?

最佳答案

您必须在任何一个.cpp文件中将LogTab::LogIndentCount定义为

#include"LogTab.h"
//...
int LogTab::LogIndentCount = 0;


[作为附带说明,如果它是使用此class的多线程系统,那么您可能会考虑使LogIndentCount同步(线程安全)]

关于c++ - 如何使用宏跟踪MFC序列化调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7145608/

10-13 08:21