【求助】前置声明和typedef

缘起助 2007-10-16 09:42:24
大家好,我有一个迁至生命和typedef的问题

//A.h

typedef struct _A {int a ; } A;

//B.h
struct A;

void func(A* a);

编译报错,A重复定义。A.h改写后编译通过。
//A.h
struct A {int a;};

请问这是为什么?顺便问一下什么时候定义struct一定使用typedef?谢谢。
...全文
203 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JackyRao 2007-10-17
  • 打赏
  • 举报
回复
直接用A a; 就可以C++中不要用struct A
quentinliu 2007-10-16
  • 打赏
  • 举报
回复
c++ 里不用定义类的时候typedef 就可以的,

typedef 是定义别名

typedef
struct _A {
int a ;
} A,*pA;

这样子,A 和结构体 _A 就是一个东西了,生成的东西是一样的,内部都包含有一个int型的a

你可以这样理解

struct _A
{
int a;
}

typedef _A A


什么时候定义都可以不用typedef,只要你喜欢。用typedef只是为了用着方便

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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