0
私はこのC
プログラムを持っています。関数が間違った型の変数を返すときにコンパイルエラーが発生しない
#include <stdio.h>
unsigned char foo()
{
int x = 1000;
return x;
}
int main(int argc, char *argv[])
{
printf("foo returns %d\n", foo());
}
私はそれをコンパイルするために、次の使用しています:
gcc -c -g -o ../tgt/Linux/main.c.o -Wall -fpic main.c
gcc ../tgt/Linux/main.c.o -g -o ../tgt/Linux/t -Wall
それは次のような出力を生成する:
$ t
foo returns 232
これはfoo()
でx
の下位8ビットです。それで、意味があります。しかし私の質問です:なぜこれは警告を生成していないと私はこのタイプの間違いの警告を生成する方法はありますか?あなたが言及したコメントで
'-Wconversion'を使用してコンパイルすると、警告が表示されます。 –
@AlterMann Thanks man。私は、なぜ ''壁 '' -Wextra'を使っても、なぜ引き起こされないのだろうか? – jdarthenay
charはCの小さな整数です。@ AlterMannは-Wconversionフラグを使用しない限りエラーは発生しません。 –