【C】结构体的使用

一、结构体对齐 1. 默认对齐规则 1.1. 规则 数据类型自身的对齐值 int8_t / uint8_t 型:1 字节。 int16_t / uint16_t 型:2 字节。 int32_t / uint32_t / float 型:4 字节。 double 型:8 字节。 结构体的自身对齐值 其成员中自身对齐值最大的那个值。 数据成员、结构体的有效对齐值 自身对齐值和指定对齐值中较小者,即 有效对齐值 = min(自身对齐值,当前指定的对齐值)。 1.2. 示例 假如结构体的声明如下: 1 2 3 4 5 6 typedef struct { uint8_t a; uint16_t b; uint16_t c; uint32_t d; } struct_demo_t; 假设当前默认是 4 字节对齐,该结构体的大小是 12 Bytes,内存的使用空间如下: 1 2 3 4 5 6 7 +---+---+---+---+ | a | | b | +---+---+---+---+ | c | | +---+---+---+---+ | d | +---+---+---+---+ 代码测试(main.c): ...

October 27, 2025 · 9 min · 1746 words

【C】个人代码风格规范

1. 注释 所有的注释统一使用 /**/,除了一些特殊的注释以外。 单行注释: 1 /* 单行注释 */ 多行注释: 1 2 3 4 /** * 多行注释 1 * 多行注释2 */ 特殊的注释:用于表面一些待办事项,比如:TODO、FIXME、BUG、HACK。 1 2 // TODO 实现 xxx 功能 // FIXME 需修复 xxx 功能 特殊的注释:在第三方 SDK 中加入修改,并方便后续升级 SDK 时方便区分。 1 2 3 4 5 6 7 8 // [公司名] [人名] [时间] S : 实现 xxx 功能 ... // [公司名] [人名] [时间] E : 实现 xxx 功能 // Github Zeepunt 2025.10.01 S: 添加调试打印信息 ... // Github Zeepunt 2025.10.01 E: 添加调试打印信息 2.大括号 对于所有非函数的语句块,把起始大括号放在行尾,而把结束大括号放在行首。 ...

October 26, 2025 · 3 min · 459 words