RL78CS+ forCCでソフトを作っています。例えば、関数 void xxfunc(uint32_t, uint32_t) があったとします。メインで、 uint16_t aa; uint16_t bb; aa = 1000; bb = 6000; xxfunc(aa, bb);でコンパイルします。引数の型が合わないのでワーニングが出ると思いましたが出ませんでいた。暗黙の型変換だと思います。このような場合でもワーニングを出すことはできますか?
整数の上位変換は変換前の値が保証されるため、たぶん警告を出すコンパイラ無いんじゃないでしょうか…
以下は、適当に見つけたマイクロソフトのコンパイラの例です。
[標準変換 | Microsoft Docs]()
gccでも-Wconversionオプションつけると、型変換の警告が出るようになりますが、やはり上位変換については警告は出ませんね…
$ cat test.c #include <stdint.h> #include <stdio.h> void xxfunc(uint32_t a, uint32_t b) { printf("%d, %d\n", a, b); } int main(void) { uint16_t aa; uint16_t bb; aa = 1000; bb = 6000; xxfunc(aa, bb); return 0; } $ gcc test.c -Wconversion $ gcc test.c -Wconversion -Wall