在我们的ASIC上有两个处理器,这意味着有两个稍微不同的编译器。我们通过结构体在两者之间传递数据以进行通信,这种情况每秒钟经常发生,所以我们没有太多时间来浪费。
问题在于两个编译器对填充的处理方式不同。因此,当我们从一个域复制数据到另一个域时,我们得到了不正确对齐的值。我们最初的解决方案是在结构体内部的所有内容上加上"attribute((packed))"。虽然这似乎大多数时候都有效,但它并不具备可移植性。随着我们将代码移植到不同平台,我注意到并非所有编译器都理解"attribute((packed))",我希望保持我们的代码可移植性。
这里有人遇到过这种问题吗?你会推荐什么?
提前感谢!
问题在于两个编译器对填充的处理方式不同。因此,当我们从一个域复制数据到另一个域时,我们得到了不正确对齐的值。我们最初的解决方案是在结构体内部的所有内容上加上"attribute((packed))"。虽然这似乎大多数时候都有效,但它并不具备可移植性。随着我们将代码移植到不同平台,我注意到并非所有编译器都理解"attribute((packed))",我希望保持我们的代码可移植性。
这里有人遇到过这种问题吗?你会推荐什么?
提前感谢!