我遇到了这个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矩阵并完成它呢?
顾名思义,他们试图强制Mtx将 es 放置在内存中,并满足 a 的地址对齐要求long long,而不是 a long。这对于操作系统或处理器架构提出的要求可能很重要。Google 建议“Mtx”可能是“mutex”的缩写,C 互斥体实现将处理一些相当低级的接口。