我有一些代码或更好的说法是从STM32/FreeRTOS复制到OMAP2430/WindowsCE平台的完整项目。
在复制的 C/C++ 文件中,我有一些代码处理在运行时创建和销毁的数据结构,大小和地址对齐完全取决于在每个创建过程中进入数据结构的数据量。
我不想使用任何打包/填充来使地址对齐正确,但想使用任何允许对数据结构进行非对齐访问的编译器选项。现在我一直在使用__unaligned
数据结构指针的类型修饰符(UNALIGNED
宏来自Windef.h
)
我知道它会造成一些性能下降,但我可以在这段特定的代码部分中忍受。
我想从其他程序员那里知道的是,Windows CE 编译器设置中有一个选项可以强制所有内存访问未对齐。我说的是这样的事情https://blogs.oracle.com/d/entry/on_misaligned_memory_accesses
非常感谢任何答案。
谢谢