__unaligned
在声明与 __unaligned 修饰符时的指针,编译器假定,指针解决未对齐数据。 因此,针对 Itanium 处理器家族 (IPF) (ipf) 计算机的应用程序,编译器生成一次读取对齐的数据一个字节的代码。
备注
__unaligned 修饰符 x64 和 Itanium 编译器有效,但会影响面向计算机仅限 IPF 的应用程序。 此修饰符只介绍解决数据的对齐;指针假定对齐。
Itanium 处理器生成对齐错误,则它访问未对齐数据,并且,每次处理错误会降低性能。 使用 __unaligned 修饰符使该处理器一次读取数据的字节和避免错误。 此修饰符不需要 x64 应用程序是必需的,因为 x64 处理器处理未对齐数据,而不出错。
有关对齐方式的更多信息,请参见:
示例
// unaligned_keyword.cpp
// compile with: /c
// processor: x64 IPF
#include <stdio.h>
int main() {
char buf[100];
int __unaligned *p1 = (int*)(&buf[37]);
int *p2 = (int *)p1;
*p1 = 0; // ok
__try {
*p2 = 0; // throws an exception
}
__except(1) {
puts("exception");
}
}