gcc -Wall -pedantic -ansi -std=c89
で次のコードをコンパイルすると、ポインタ割り当て時にエラーが発生することなく正常にコンパイルされました。 int (*)[4]
からint (*)[]
に変換することに注意してください。この(互換性がない?)の割り当てを可能にするためのいくつかの理由があると仮定すると不完全な配列タイプですか?
int arr[4];
int (*p_arr)[] = &arr;
は、私はそれを使用しようとすると、コンパイラが不完全な型エラーerror: invalid application of ‘sizeof’ to incomplete type ‘int[]’
を与えます。
(void) sizeof(*p_arr);
このエラーは、以前のポインタ割り当てを許可する使用が何であるか考えています。p_arr = &arr
?この割り当ては標準に従って許可されていますか?
私は不完全な構造体/共用体型(通常は前方宣言用)を使用していますが、エラーincomplete array element type
も発生しています。しかし、このincomplete array type
は私にとって初めてのものです。 Cの標準で可能であり、ユースケースを持っていますか?
一つの言語を決定します。 CとC++は異なります。 – Lundin
@ Lundinわかりました。私はいつもこれまで1つのタグを選んでいました。しかし、 'C 'と' C++'の違いについて質問している場合、どのタグを選択するのですか?これらのタグは絶対に排他的であるとか、検索用語にすぎないと思っていますか? – user1969104
@ user1969104 CとC++の違いについて質問していますか?そうは思われません。もしあなたがそうだったら、両方のタグを追加するといいでしょう。私はLundinがこのコメントを追加していないと確信しています。 –