__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");
   }
}

请参见

参考

C++关键字