5

このコードを考えてみましょう:

int function()
{
  int a = 1 ;
  int b = helper(&a);
  return b ;
}

int main()
{
  function();
  return 0 ;
}

このコードスニペットは、「helper」という関数が宣言されていないにもかかわらず、gccを使用して問題なくオブジェクトコードにコンパイルされます。リンカがこれをキャッチする必要があることは知っていますが、リンカとコンパイラがエラーを生成しないにもかかわらず、正しいヘッダー(関数宣言を含む)が含まれると解決されるあいまいなバグを見てきました。

関連しているように見えますが、実際には私が望むものを達成していないgcc警告がいくつかあります:-Wmissing-prototypes、-Wmissing-declarations、および-Wstrict-prototypes。残念ながら、これらの警告は、グローバル関数が定義されている場合のプロトタイプの欠落に限定されています。グローバル関数が参照されている場合のプロトタイプの欠落に関する警告に関心があります。

誰かが代替案を提案できますか?、ありがとう。

4

2 に答える 2

11

-Wimplicit-function-declaration警告が必要です。

個人的には、コードをでコンパイルすることを好みます-Wall -Wextra

于 2012-07-30T16:13:26.467 に答える
4

-Wl,--no-undefined強制undefined functionエラーを確認するために使用します。

于 2012-07-30T16:11:28.440 に答える