次のテスト プログラムを検討してください。
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++ コードをコンパイルするときに同じ警告を表示する方法はありますか?