<分区>
我正在尝试蓝牙编程,遇到了这个我不明白的问题。基本上,当我使用 typedef 结构定义时,编译器会抛出错误:
temp_testcode.c:11:23:错误:“head”的存储大小未知
通过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__ ((packed))
的问题之前关于 typedef 结构的 stackoverflow 帖子没有帮助我(typedef struct vs struct definitions),因为我不知道如何使用 typedef 结构在 main 方法中进行结构初始化工作 (而不是我当前注释掉的版本)。这是必要的,因为蓝牙头文件都这样定义它们的结构。
所以:
- 如何使用 typedef struct 在 main 方法中进行结构初始化?
- 为什么我的代码不起作用?
感谢您的宝贵时间和帮助!