[過去ログ] C言語なら俺に聞け 160 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
917(2): (ワッチョイ 2d63-r2C4) 2023/04/12(水)14:05 ID:NgkNjGWQ0(2/7) AAS
struct X;
void func(struct X[]); //error
struct Y { int a; };
void func(struct Y[]); //ok
不完全型の場合、仮引数の[]はポインタにならない??
ちな、gccではエラー、clでは通る
929(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 423e-/aea) 2023/04/12(水)16:36 ID:bThMVtxz0(1) AAS
>>917
規格的には (関数定義の一部ではない) 宣言の段階なら不完全型であることを許しているように読める。
C99 だと 6.7.5.3 の第 12 段落に書かれている。
> If the function declarator is not part of a definition of that function,
> parameters may have incomplete type and may use the [*] notation in their sequences of
> declarator specifiers to specify variable length array types.
> 関数宣言子が関数定義の一部ではない場合,仮引数の型は不完全型でもよく,
> また宣言指定子列に [*] を使って可変長配列型を指定してもよい。
ちなみに GCC だと以下のようなものもエラーだが MSVC だと通る。
struct X;
省1
931(1): (ワッチョイ 495f-/aea) 2023/04/12(水)23:57 ID:ysjFLZAD0(1) AAS
>>917
Cではエラーになるのが規格準拠の動作。
ただし宣言の形式を変えるだけで通る理不尽な制約でありC++では許されるように改められている。
外部リンク:stackoverflow.com
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.041s