我有一个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/