宣言された関数は、私は次のようなコードを持っていません。 main()の前に一度(非静的に)関数を宣言し、次にmain()の後に関数を静的に定義します。なぜこのコンパイルエラーが発生しますか?静的宣言は非static宣言に従うが、静的
エラーは、 "interact()の静的宣言は非静的宣言に続きます"です。
宣言された関数は、私は次のようなコードを持っていません。 main()の前に一度(非静的に)関数を宣言し、次にmain()の後に関数を静的に定義します。なぜこのコンパイルエラーが発生しますか?静的宣言は非static宣言に従うが、静的
エラーは、 "interact()の静的宣言は非静的宣言に続きます"です。
このタイプのエラーは、誤ってまたは意図的に、通常はCで許可されていない機能が含まれている場合に発生します。これは、ファイル自体または1つヘッダーを介して含まれている同じ翻訳単位内の他のファイルのうちの1つです。ミスマッチブレースは、含まれているプロトタイプまたは定義の本体に存在する可能性があります。あなたは次のようなプロトタイプに構文エラーがあった場合たとえば、:
void stringInsertChars(BUFFER* buffer, const char* c){
代わりに...
void stringInsertChars(BUFFER* buffer, const char* c);
それ自体が誤解を招くよう、エラーを引き起こす可能性があります。ここで、プロトタイプが定義からコピーされたが、コーダーが{
を;
に変更するのを忘れたことが起こった。
この問題を検出する方法は、エラーメッセージの本文全体を慎重に調べることです。不一致のブレースが問題である場合は、エラーは次のように読んで表示されます。
File mycode.c in function stringInsertChars 46:
Static declaration of interact() follows non-static declaration....
(more errors of the same type)
ので、エラーメッセージが余分なブレースを持っていたプロトタイプ(または定義)を教えてくれます。
どのラインでエラーが指摘されていますか? – dbush
私はあなたの問題が提示されたコードにないと思います。 –
エラーが 'interact()'を参照していますか? – weirdgyn