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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)