1
'char a [10];'が1つのファイルで定義されていて、 'extern char * a;'が別のファイルで宣言されていても機能しません。それが正しいか? 'extern char * a;'宣言は配列を宣言しないため、 は実際の定義と一致しません。「extern」を正しく宣言するにはどうすればよいですか?
'char a [10];'が1つのファイルで定義されていて、 'extern char * a;'が別のファイルで宣言されていても機能しません。それが正しいか? 'extern char * a;'宣言は配列を宣言しないため、 は実際の定義と一致しません。「extern」を正しく宣言するにはどうすればよいですか?
修正 - グローバルシンボルのすべての宣言は、そのシンボルの定義と互換性がなければなりません。そうしないと、恐ろしい未定義ビヘイビアが発生します。 extern char *a;
はchar a[10];
と互換性がありません。
代わりにchar a[10];
と互換性のあるextern char a[10];
またはextern char a[];
のいずれかを使用できます。
これは、あなたが識別しなかった言語によって異なります。 –
「これはうまくいかない」という証拠はありますか? –
あなたの質問を編集して、より詳細な情報を含めることができますか?使用している言語;あなたが今持っているものの[mcve]。正確な結果やエラーメッセージが表示されます。あなたが期待していた、または期待していた結果は? – IMSoP