6

重複の可能性:
GCC に幅が広すぎる型を関数に渡すことを警告させることはできますか?

次のテスト プログラムを検討してください。

static void func(int a)
{
}

int main()
{
    unsigned int b = 42;

    func(b);

    return 0;
}

gcc でコンパイルします。

lol@mac:~/projects$ gcc -Wconversion testit.c
testit.c: 関数「main」内:
testit.c:11: 警告: 'func' の引数 1 をプロトタイプのために署名済みとして渡します
lol@mac:~/projects$

しかし、g++ では警告はありません!:

lol@mac:~/projects$ g++ -Wconversion testit.c
lol@mac:~/projects$

この理由は何ですか?また、C++ コードをコンパイルするときに同じ警告を表示する方法はありますか?

4

1 に答える 1

4

ドキュメントから-Wconversion

-Wsign-conversion が明示的に有効にされていない限り、C++ では、符号付き整数と符号なし整数の間の変換に関する警告はデフォルトで無効になっています。

十分に新しいバージョンの GCC も必要になるようです。バージョン 4.0.1 を使用していますが、 を認識しません-Wsign-conversion

于 2009-02-03T03:33:36.763 に答える