sizeofと不完全型
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/08 17:59 UTC 版)
「sizeof」の記事における「sizeofと不完全型」の解説
sizeofは完全に定義されたデータ型(メモリレイアウトが確定した型)のみに適用できる。配列なら、要素数が変数宣言に含まれていなければならず、構造体や共用体ならメンバが完全に定義されていなければならない。例えば次の二つのソースファイルがあったとする。 /* file1.c */int arr[10];struct x { int one; int two; }; /* file2.c */extern int arr[];struct x; どちらのファイルも正しいCのソースであるものの、"file1.c"ではsizeofをarrとstruct xに使用できるが、"file2.c"では完全型でないため使用できない。"file2.c"ではarrの要素数がわからず、struct xのメンバも分からないためである。"file2.c"でarrとstruct xをsizeofで使用できるようにするには、"file2.c"のarrの宣言に要素数を指定したり、struct xの完全な宣言を書いたりする必要がある。
※この「sizeofと不完全型」の解説は、「sizeof」の解説の一部です。
「sizeofと不完全型」を含む「sizeof」の記事については、「sizeof」の概要を参照ください。
- sizeofと不完全型のページへのリンク