对齐结构如何帮助C?

use*_*203 8 c structure

我遇到了这个C代码,我试图理解它:

typedef long    Mtx_t[4][4];

typedef union {
    Mtx_t m;
    long long int   force_structure_alignment;
} Mtx;
Run Code Online (Sandbox Code Playgroud)

第一个typedef将Mtx_t定义为4x4矩阵,我理解的很多.但是Mtx的第二个typedef只是调用了前一个类型,并添加了一个名为force_structure_alignment的long long int.

这样做的目的是什么?为什么不将Mtx定义为4x4矩阵并完成它呢?

use*_*ica 4

顾名思义,他们试图强制Mtx将 es 放置在内存中,并满足 a 的地址对齐要求long long,而不是 a long。这对于操作系统或处理器架构提出的要求可能很重要。Google 建议“Mtx”可能是“mutex”的缩写,C 互斥体实现将处理一些相当低级的接口。