C言語の引数

RL78
CS+ forCC
でソフトを作っています。
例えば、関数 void xxfunc(uint32_t, uint32_t) があったとします。

メインで、
  uint16_t  aa;
  uint16_t  bb;
 
  aa = 1000;
  bb = 6000;
 xxfunc(aa, bb);
でコンパイルします。

引数の型が合わないのでワーニングが出ると思いましたが出ませんでいた。
暗黙の型変換だと思います。
このような場合でもワーニングを出すことはできますか?

Parents
  • > 例えば、関数 void xxfunc(uint32_t, uint32_t) があったとします。
    >
    > メインで、
    > uint16_t aa;
    > uint16_t bb;
    >
    > aa = 1000;
    > bb = 6000;
    > xxfunc(aa, bb);
    > でコンパイルします。
    >
    > 引数の型が合わないのでワーニングが出ると思いましたが出ませんでいた。
    > 暗黙の型変換だと思います。

    警告が出る出ないはさておいて、この場合の暗黙の型変換に何か問題がありますか?
    暗黙の型変換すべてをなくしたいということであれば上記のコードは aa や bb の初期化も

    aa = (uint16_t)1000U;
    bb = (uint16_t)6000U;

    等とするべきと思いますが現実的とも思いません。
  • 要は、関数の引数がuit32_tなのでuint16_tのaaを代入する場合、
    「型があってませんよ」という警告を出してほしいという意味です。
    例では、そのまま代入しても害はないことは分かっています。
  • 無意味なことを要望されてるということですか
Reply Children
No Data