error: storage size of 'xxx' isn't known

C语言结构体可见域问题

某c文件中包含了结构体xxx_s的头文件(结构体xxx_s的定义不在该头文件中,头文件中只有声明)

#inlucde "xxx.h"

在c文件中定义:

struct xxx_s xxx;

编译器提示:

error: storage size of 'xxx' isn't known

说明代码中使用结构体类型的位置,编译器不知道该结构体所需“存储空间”的大小
进一步说明,编译器在该位置也不知道结构体的成员

因此,在c文件中,只能使用结构体定义指针(?是否可以定义其他类型)

struct xxx_s *xxx;

然后使用头文件xxx.h中提供的方法来操作指针xxx

这里可以认为是C语言提供的类似于C++的封装特性

其它可能错误

1 sizeof

同理,由于c文件不知道结构具体类型

sizeof(struct xxx_s)

同样无法编译通过,编译器提示:

invalid application of 'sizeof' to incomplete type 'struct xxx_s'

2 ->

同样,结构体的成员也无法直接访问。
c文件中如果出现直接访问结构体成员时,编译器提示:

error: dereferencing pointer to incomplete type
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值