yohhoyの日記

技術的メモをしていきたい日記

複合リテラルの有効期間

C99で追加された複合リテラル(compound literal)の有効期間についてメモ。

  • ファイルスコープに記述した場合、静的記憶域期間(static storage duration)を持つ。
  • ブロックスコープに記述した場合、該当スコープ内でのみ有効となる。

C99 6.5.2.5/p3, 6より引用。

3 If the compound literal occurs outside the body of a function, the initializer list shall consist of constant expressions.

6 The value of the compound literal is that of an unnamed object initialized by the initializer list. If the compound literal occurs outside the body of a function, the object has static storage duration; otherwise, it has automatic storage duration associated with the enclosing block.

関連URL