怎么解决redefinition of "***"?

cr999 2003-09-03 07:06:41
有一小程序,在VC下编译通过,在DEV-C++下也通过,到linux下,在KDE2.0下死活不能编译通过。
主要是下面这个问题
a.h
#ifndef _A_H_
#define _A_H_
struct A
{
...
};
#endif


b.h
#include "a.h"
...
vector<A> v;
...



c.h
#include "a.h"
...
vector<A> v;
...


main.cpp
#include "c.h"
#include "b.h"
main()
...


错误是redefinition of "struct A";
但是如果将b.h中的“include a.h"拿掉,又有'A' was not declared in this scope.

请问如何解决~~
...全文
4600 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cr999 2003-09-04
  • 打赏
  • 举报
回复
恩,解决了,把
#ifndef _A_H_
#define _A_H_

删除再重新写一遍就可以了,莫非是从Windows下到Linux文件发生了改变?
tkit 2003-09-03
  • 打赏
  • 举报
回复
按常理推断应该没问题的呀,既然你已经用ifndef来保护,神奇
cr999 2003-09-03
  • 打赏
  • 举报
回复
哦,那两个都是类里的成员变量
铖邑 2003-09-03
  • 打赏
  • 举报
回复
怎么b.h和c.h中都定义了变量v呢?

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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