大侠好:
我遇到一个问题,有如下结构体定义
typedef struct _A
{
char first[150];
char second[150];
char third;
}A;
由于结构体中的元素 second未4字节对齐,(因为和first相差150个字节)所以用标准库的时候(比如strcmp会出现hard fault 错误,因为strcmp里面可能是转换成int判断了)会出现错误。
我的问题是如何让结构体内部的元素也能4字节对齐,因为代码量很大,无法对代码中的所有结构体的元素类型及数组大小都一一调整。
我用了 #pragma pack 及 __align 和 --no_unaligned_access(编译器选项)都无法解决这个问题。
我查了一些资料,因为我用的是SDRAM(地址空间是从0XD0000000开始的,说的是有可能这个空间是 device memory type,必须4字节对齐,因为cpu对这样的地址空间访问不会进行转换,必然出现错误。
那我如何能简单的进行全局的配置成所有代码都4字节对齐呢?
感谢各位!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>