warning C4005: 'DBGMSG' : macro redefinition 如何修正?

kickmeout 2007-09-07 03:05:57
dbgdef.h的内容
-------------------
DBGMSG(BASE=1000,""),
DBGMSG(AAA,"AAA"),
DBGMSG(BBB,"BBB"),
DBGMSG(CCC,"CCC"),
DBGMSG(DDD,"DDD"),
DBGMSG(EEE,"EEE"),
DBGMSG(FFF,"FFF"),
DBGMSG(GGG,"GGG"),
DBGMSG(MAX,""),


/********************/
dbgdef.cpp的内容
-------------------
#define DBGMSG(A,B) A

enum _dbgdef
{
#include "defdbg.h"
}dbgdef;


#define DBGMSG(A,B) B
char *str[]=
{
#include "defdbg.h"

};

char * GetDbgTxt(int dbgcode)
{
return str[dbgcode-BASE];
}

int main(int argc, char* argv[])
{
printf("%s\n",GetDbgTxt(DDD));


return 0;
}
可以正常运行,就是编译有警告。
如何修正代码或者给我比较好的解决方案可以根据标识符获得其文字描述?
...全文
1333 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kickmeout 2007-09-07
  • 打赏
  • 举报
回复

#define DBGMSG(A,B) A

enum _dbgdef
{
#include "defdbg1.h"
}dbgdef;

#ifdef DBGMSG
#undef DBGMSG
#endif

#define DBGMSG(A,B) B
char *str[]=
{
#include "defdbg1.h"

};

char * GetDbgTxt(int dbgcode)
{
return str[dbgcode-BASE];
}

int main(int argc, char* argv[])
{
printf("%s\n",GetDbgTxt(DDD));


return 0;
}
编译通过。我钻了牛角尖了。呵呵。
  • 打赏
  • 举报
回复
#ifdef DBGMSG
#undef DBGMSG

在这里重新定义 DBGMSG

#endif
kickmeout 2007-09-07
  • 打赏
  • 举报
回复
#pragma warning( disable:4005)
的方法屏蔽的就算了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧