名前空間
変種
操作

_Alignof 演算子

提供: cppreference.com
< c‎ | language

被演算子の型のアライメント要件を問い合わせます。

目次

[編集] 構文

_Alignof( type-name ) (C11以上)

この演算子は、通常、ヘッダ <stdalign.h> で提供される便利マクロ alignof を通して使用されます。

[編集] 説明

type-name によって表される型のアライメント要件を返します。 type-name が配列型の場合、結果はその配列の要素型のアライメント要件です。 type-name は関数型または不完全型にはできません。

結果は size_t 型の整数定数です。

被演算子は評価されません (そのため被演算子内で使用した外部識別子が定義されている必要はありません)。

typeVLA 型の場合、そのサイズ式は評価されません。

(C2x以上)

[編集] ノート

式に対する alignof の使用は、一部の C コンパイラで非標準の拡張として使用できます。

[編集] キーワード

_Alignof

[編集]

#include <stdio.h>
#include <stddef.h>
#include <stdalign.h>
 
int main(void)
{
    printf("Alignment of char = %zu\n", alignof(char));
    printf("Alignment of max_align_t = %zu\n", alignof(max_align_t));
    printf("alignof(float[10]) = %zu\n", alignof(float[10]));
    printf("alignof(struct{char c; int n;}) = %zu\n",
            alignof(struct {char c; int n;}));    
}

出力例:

Alignment of char = 1
Alignment of max_align_t = 16
alignof(float[10]) = 4
alignof(struct{char c; int n;}) = 4

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 6.5.3.4 The sizeof and _Alignof operators (p: 90-91)

[編集] 関連項目

いかなる他のスカラー型よりも大きいまたは等しいアライメント要件を持つ型
(typedef) [edit]
_Alignas 指定子 オブジェクトのアライメント要件を設定します (C11以上)
alignof 演算子C++リファレンス