返回信息流C语言
a.h文件:
struct A
{
};
b.h文件:
struct B
{
struct A a;
};
怎样才能让编译通过呀,就是b文件要用到a文件中声明的类型,但是a中这个结构体类型具体的样子不想让b知道,该怎么弄啊,求解答。
---------------------------------------------
感谢各位大佬解答,已经搞懂头文件和嵌套结构体了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #98764同步于 2019/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教个C语言的问题
q469764030
2019/3/29镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 chenxiansf 的大作中提到: 】
: 最上面加句struct A;
不行啊,编译报错 b.h 里的a field ‘a’ has incomplete type
【 在 WhataNoob 的大作中提到: 】
: 不是加个extern struct A吗
不行啊,b.h的struct B 里的成员a还是找不到他的具体类型field ‘a’ has incomplete type。
但是a中这个结构体类型具体的样子不想让b知道 是什么意思啊。。
B这个结构体里面都有A了 咋会不知道内部结构呢。。
要不用指针?B里面放一个void指针,需要用A的结构时再强制类型转换
类似这样
typedef struct A{
int a;
int b;
}A_t;
typedef struct B{
void* pA;
int c;
}B_t;
int main(){
B_t B;
A_t A;
A.a=1;
A.b=2;
B.c=3;
B.pA=(void*)&A;
printf("%d \n", ((A_t*)(B.pA))->a);
return 0;
}
【 在 Kay 的大作中提到: 】
: 但是a中这个结构体类型具体的样子不想让b知道 是什么意思啊。。
: B这个结构体里面都有A了 咋会不知道内部结构呢。。
: 要不用指针?B里面放一个void指针,需要用A的结构时再强制类型转换
: ...................
嗯嗯,我这个确实是挺矛盾的。 感谢你的方法!
主要是要是把这俩结构体写在同一个.h里就能行,为啥分开就B里的a就找不到它的具体样子了啊,我b.h头文件包含a.h
struct B里是struct A *a
应该就不会报错了
【 在 q469764030 的大作中提到: 】
: 不行啊,b.h的struct B 里的成员a还是找不到他的具体类型field ‘a’ has incomplete type。