我们在项目中使用宏时遇到了问题。
下面显示了三个文件,debug.cpp和Utils.cpp都使用debug.h&#39}的宏函数AA(arg1, ...)
。
由于该宏定义,有三个文件存在冲突。
当我在debug.h中注释掉行void AaFun(const char *arg1, const char *arg2, ...);
时,debug.cpp可以运行但是Utils.cpp会显示错误消息
使用未声明的标识符' AaFun'。
但如果我们不在debug.h中注释该行,那么我们收到来自debug.cpp的错误消息
AaFun'
的冲突类型
三个文件应该能够一起运行,任何人都可以帮助我理解问题和可能的解决方案。
class debug.h:
#ifndef __DEBUG_H__
#define __DEBUG_H__
#define DEBUG 1
#ifdef DEBUG
#define AA(arg1, ...) AaFun(arg1, ARG2, ## __VA_ARGS__)
#endif
.....
void AaFun(const char *arg1, const char *arg2, ...);
class debug.cpp:
#include "debug.h"
...
void AaFun(const char *arg1, ...)
{
...function content...
}
类Utils.cpp
#include "debug.h"
string Utils::dupName(string origName, int num)
{
AA("Making a dupName from %s and %d\n", origName.c_str(), num);
return xxx;
}