オブジェクトのアライメントの問い合わせと指定をするためには、ヘッダー をインクルードします。
 では、4つのマクロが定義されます。
alignas
キーワード _Alignas に展開されます。
alignof
キーワード _Alignof に展開されます。
_alignas_is_defined
整数の定数1に展開されます。
_alignas_is_defined
整数の定数1に展開されます。
_alignas_is_defined と _alignof_is_defined  は、#if 前処理ディレクティブでの使用に適しています。
alignas()は、変数を宣言するにあたりアライメントをバイト単位で指定します。
例
int main(void) {
  alignas(65536) int i;
  alignas(256) int j;
  int k;
  printf("iのアドレスは%p\n", &i);
  printf("jのアドレスは%p\n", &j);
  printf("kのアドレスは%p\n", &k);
  return 0;
}
結果
iのアドレスは0x7ffffffe0000
jのアドレスは0x7ffffffeff00
kのアドレスは0x7ffffffeffec
alignof() は、指定した型が要求するアライメントを size_t で返します。
例
int main(void) {
  printf("charのアラインメント要件は%zu。\n", alignof(char));
  printf("intのアラインメント要件は%zu。\n", alignof(int));
  printf("floatのアラインメント要件は%zu。\n", alignof(float));
  printf("doubleのアラインメント要件は%zu。\n", alignof(double));
  return 0;
}
結果
charのアラインメント要件は1。
intのアラインメント要件は4。
floatのアラインメント要件は4。
doubleのアラインメント要件は8。
alignas型指定子（キーワード_Alignas）、alignof演算子（キーワード_Alignof）、ヘッダー、ISO/IEC 9899:2011で追加されました。