7

以下では、 type を定義していませんdoesntexist

void myfunction(doesntexist argument)
{
}

GCC 4.7.2 は " error: variable or field ‘myfunction’ declared void"と言います

私の質問は次のとおりです。引数の型ではなく関数名が無効であることを参照するために、ここでコンパイラの心に何が起こっているのでしょうか?

[編集]
反対票を投じる前に、この問題への回答はエラーの順序に関連しており-Wfatal-errors、より直接関連するメッセージが印刷されないようにすることに注意してください。これは、少しあいまいなコンパイラ メッセージを調べただけではありません。

4

3 に答える 3

5

ありがとう、@JoachimPileborg。編集されていないエラー ログには有用なものは何も含まれていませんでした。コメントは、問題と解決策に私を導きました...私のメイクファイルから削除-Wfatal-errorsしてください。

19:17 >>> gcc -Wfatal-errors main.c
main.c:2:17: error: variable or field ‘myfunction’ declared void
compilation terminated due to -Wfatal-errors.

そして削除-Wfatal-errors...

19:18 >>> gcc main.c 
main.c:2:17: error: variable or field ‘myfunction’ declared void
main.c:2:17: error: ‘doesntexist’ was not declared in this scope

問題が解決しました。


「そもそもなんで使う の?」という方へ。:最初のエラーが残りをトリガーする可能性があるため、通常、すべてのエラーは必要ありません。この場合、エラーが順不同であるか、少なくとも予期しない順序で表示されているように見えます-コンパイラが最初にエラーに遭遇すると思います。-Wfatal-errors ‘doesntexist’ was not declared

于 2013-11-16T11:58:19.703 に答える
2

関数がvoid型であることに間違いなく問題はありませんg++。関数パラメーターが不明な型で構成されている場合、コンパイラのエラーメッセージスキーマが不十分である可能性があります。

于 2013-11-13T08:35:30.440 に答える
1

こんにちは@jozxyqk引数の型を指定する必要があります.Coliruにあるものがコード を適切に表している場合は、引数に有効なデータ型を指定する必要がありvoid myfunc(string argument)ますvoid myfunc(int argument).

ここにデータ型に関する適切なリソースがあり、別のリソースがここにあります。C ++などでデータ型を使用する方法についてGoogle検索を行う価値があるかもしれないので、データ型とその使用法に関する読み物を見つけることができます。

ここにリンクされているのは、文字列を引数の有効なデータ型として示す修正バージョンと、int 引数のオーバーロードされたバージョンです。

さらに情報が必要な場合はお知らせください:)

于 2013-11-13T09:47:46.133 に答える