[2380] Re:ポインタ完全制覇の質問
投稿者:(ぱ)こと管理人
2024/05/27 21:16:14
>C の場合
>変数定義で要素数を書かない場合(上記 static int a[]; が該当)には当該変数は
>不完全型な仮定義 (tentative definition) になる・・・と言いたいところなんですが
> static がある場合には仮定義にならず一発定義になります。
確認しました。ここについてはこれですかね。
| 6.9.2 外部オブジェクト定義
…
| オブジェクトに対する識別子の宣言が仮定義であり,内部結合をもつ場合,
| その宣言の型は不完全型であってはならない。
これを普通に読むと、
static int a[];
はそれ自体でコンパイルエラーになりそうなものですが
(まあ実際、役に立たないと思いますし)、
| 大きさの分からない配列型は,不完全型とする。その型は,それ以降のその型の
| 識別子の宣言(内部結合又は外部結合をもつ)で大きさを指定することによって,
| 完全となる。
こっちでは(内部結合でも)それ以降の宣言で大きさを指定すればよい、
とあるようで、これがどういう時に有効なのか、読み解けていません…