主に 2 種類のコンパイル警告があります。
1. 関数の暗黙の宣言
in a.c
、char *foo(char *ptr1, char *ptr2)
in 、いくつかの関数は宣言なしでb.c
この関数を使用し、コンパイラは関数の戻り値を整数として扱うようであり、関数宣言よりも少ないまたは多い変数を渡すことができることがわかりましたfoo
foo
foo
2. 列挙型と別の型の混在
私のターゲットチップはARM11で、これら2種類のコンパイル警告を解決しなくても、プログラムは問題なく実行できるようですが、これらの背後には何らかのリスクがあるに違いないと思います. これら2種類のコンパイル警告が予期しない問題を引き起こす可能性があるという良い例を誰か教えてもらえますか?
一方、これら 2 つの警告に潜在的なリスクがある場合、なぜ C コンパイラはこれらの種類の警告の発生を許可し、直接エラーに設定しないのでしょうか? 裏話は?