stdalign.h是C語言標準2011版新增加的C標準函數庫頭文件,為向後兼容目的定義了4個宏:

  • alignas 被擴展為_Alignas,_Alignas為C11的關鍵字。
  • alignof 被擴展為_Alignof,_Alignof為C11的關鍵字。
  • __alignas_is_defined 被擴展為1
  • __alignof_is_defined 被擴展為1

在C++11中,alignas與alignof是關鍵字。alignas用於變量定義、數據成員聲明、class\struct\union的聲明與定義。alignas不可用於基本類型的別名、數組類型等。alignas只能用於更嚴格(更大對齊值)。alignas的參數可以為數、類型。

alignof的參數為類型。

例子

#include <stdalign.h>
char alignas(double) buf[30];
char alignas(32) foo[7];

typedef struct { int a; double b; } S;
// alignof(S) == 8 为真

參考文獻

  • C語言標準2011版:ISO/IEC 9899:2011第7.15節「Alignment <stdalign.h>」。

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.