User manual - アプリケーション作成上の注意点ver.1.00(2008年5月26日)

5
1-3.変数の型の不一致
【内容】
引数として与える変数が、正しい型で取られていない。
この場合、関数に正常な値が渡されなかったり、逆に正常な値を取得できないことがあり、
以降の処理が正しく動作しない。
【例】
①関数内で値が格納される変数の型が異なる
int rcd, barlen;
OBR_gets(obrbuf, &rcd, &barlen);
(関数仕様上、rcdbarlen はそれぞれ UWUB だが、両方とも int で宣言している。
rcd の場合、int UW も4バイトなので、結果的には同じになるが、barlen の場合は、
UB が1バイトなので、参照すると全く的外れな値が入っている)
②関数に値を渡す変数の型が異なる
int busy_ch,nonbusy_ch;
c_open(COM0,param,buf,buf_l,&tim_out,&del_cod,busy_ch,nonbusy_ch);
(関数仕様上、busy_chnonbusy_ch はそれぞれ B だが、両方とも int で宣言している。
本来1バイトの引数を渡すべきところに4バイトの変数を与えた場合、自分で設定したつ
もりの値が設定されない)
【対策】
コンパイル時に“1016 (W) Argument mismatch”の警告エラーが発生するので、
その際はプログラムを再度確認する。