typedef struct vs struct - "struct"的存储大小未知
typedef struct vs struct - storage size of ‘struct' isn’t known
我正在尝试自己在蓝牙编程中,并遇到了我不理解的问题。基本上,当我使用typedef struct定义时,编译器会引发错误:
temp_testcode.c:11:23: error: storage size of ‘head’ isn’t known
通过gcc temp_testcode.c
编译的代码如下:
#include <stdint.h>
typedef struct {
uint8_t code;
uint8_t ident;
uint16_t len;
} __attribute__ ((packed)) l2cap_cmd_hdr;
/**
struct l2cap_cmd_hdr {
uint8_t code;
uint8_t ident;
uint16_t len;
};
*/
int main(int argc ,char* argv[]) {
struct l2cap_cmd_hdr head;
}
尽管一旦我使用构造的较低定义(当前已注释(,代码编译完好无损。因此,要么是 typedef struct 的问题,要么与__attribute __(((包装(((
先前关于Typedef structs的Stackoverflow帖子对我没有帮助(Typedef struct vs struct定义(,因为我不知道如何使用 typedef struct在主方法中的结构初始化工作。(而不是我当前评论的版本(。由于蓝牙标头文件都这样定义了它们的结构,因此必要的东西是必要的。
so:
- 如何使用 typedef struct ? 在主方法中进行结构初始化。
- 为什么我的代码不起作用?
感谢您的时间和帮助!
typedefs和structs在两个不同的名称空间中。这意味着Typedef l2cap_cmd_hdr
与结构struct l2cap_cmd_hdr
不同。
您正在尝试创建后者的实例,但不存在。您确实有一个匿名结构的实例,该结构被键入l2cap_cmd_hdr
,因此您可以创建:
l2cap_cmd_hdr head;
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 继承期间显示未知行为的子类
- 输入中的字符串数未知(以字母表示)
- 具有未知值时的时间复杂性
- C++Union/Struct位域的实现和可移植性
- 链表中写入访问冲突的未知原因
- 正在生成未知类实例
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 读取文件时运行时的未知行为
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 初始化多个未知基类
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何存储未知次数迭代的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- typedef struct vs struct - "struct"的存储大小未知
- 如何在未知的Typedef struct和QbyTearray之间进行序列化和应序列化