8 typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 13 void *data; 14 char end[3]; 15 }CMD, *PCMD;
[quote=引用 5 楼 zhenwo123 的回复:] [quote=引用 4 楼 adlay 的回复:] [quote=引用 2 楼 zhenwo123 的回复:] [quote=引用 1 楼 adlay 的回复:] 不能. 得分两次发. 可以改成这样: typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 14 char end[3]; 13 char data[1]; // 变长, 某些编译器支持写成 data[0] 15 }CMD, *PCMD; PCMD p = malloc(sizeof(CMD) - 1 + data 的长度) 这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
[quote=引用 4 楼 adlay 的回复:] [quote=引用 2 楼 zhenwo123 的回复:] [quote=引用 1 楼 adlay 的回复:] 不能. 得分两次发. 可以改成这样: typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 14 char end[3]; 13 char data[1]; // 变长, 某些编译器支持写成 data[0] 15 }CMD, *PCMD; PCMD p = malloc(sizeof(CMD) - 1 + data 的长度) 这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
[quote=引用 2 楼 zhenwo123 的回复:] [quote=引用 1 楼 adlay 的回复:] 不能. 得分两次发. 可以改成这样: typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 14 char end[3]; 13 char data[1]; // 变长, 某些编译器支持写成 data[0] 15 }CMD, *PCMD; PCMD p = malloc(sizeof(CMD) - 1 + data 的长度) 这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
[quote=引用 1 楼 adlay 的回复:] 不能. 得分两次发. 可以改成这样: typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 14 char end[3]; 13 char data[1]; // 变长, 某些编译器支持写成 data[0] 15 }CMD, *PCMD; PCMD p = malloc(sizeof(CMD) - 1 + data 的长度) 这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
不能. 得分两次发. 可以改成这样: typedef struct 9 { 10 char head[4]; 11 int cmd; 12 int size; 14 char end[3]; 13 char data[1]; // 变长, 某些编译器支持写成 data[0] 15 }CMD, *PCMD; PCMD p = malloc(sizeof(CMD) - 1 + data 的长度) 这种就可以一次发, 但是别用 sizeof, 用你 malloc 的大小.
70,021
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧