我将一个庞大的应用程序从PowerPC移植到ARM。我决定使用gcc选项-Wcast-align
来检测可能导致对齐问题的实例。
但后来,我想到了-Wcast-align
选项无法检测到的情况。
例如:
typedef struct sample_s {
uint8_t c;
double i;
} __attribute__((packed)) sample_t;
void main ( void ) {
double *i;
sample_t check;
check.i = 2;
i = &check.i;
printf("i= %a\n", *i);
}
ARM将针对上述代码引发对齐异常,但-Wcast-align
不会报告此情况。
有没有其他方法来检测此类实例?