在Xcode中使用c ++宏时出现的冲突错误

时间:2016-02-26 09:44:54

标签: c++ xcode debugging macros xcode6

我们在项目中使用宏时遇到了问题。 下面显示了三个文件,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;
}

0 个答案:

没有答案