C语言中__align(A)是什么意思

use*_*735 6 c header

在 CI 的一个头文件中,在 \xc2\xb7unsigned char\xc2\xb7 之前遇到了语法__align(4),我想知道它的用途以及如果删除它会发生什么?我可以在哪里使用它?

\n

Lun*_*din 4

C 语言中没有什么叫__align()。它似乎是一个非标准语言扩展。

最有可能的是它在某个内存边界上对齐变量。例如,__align(4) uint8_t x;可能会保证x分配在可被 4 整除的偶数地址。

从 C11 开始,C 语言有一个类似的关键字_Alignas,其工作方式相同。

如果您将其从文件中删除,该变量将被分配到编译器认为合适的位置,具体取决于特定系统的对齐要求。根据优化设置(速度优化或程序大小优化),它可能会也可能不会分配在不同的地址。