MESC TOOL NEWS:
MESCT-NC30WA-980816D
M16C/60シリーズ用Cコンパイラ(アセンブラ・統合化開発環境付き)NC30WAおよびCコンパイラNC30をご使用される際の注意事項をご連絡致します。
該当製品
- NC30WA V.2.00 Release 1およびV.3.00 Release 1
- NC30 V.2.00 Release 1
typedef宣言された変数について
- 内容
typedef宣言された型を用いて関数の引数宣言を行った場合、コンパイル時にワーニングもしくはsystem errorを発生させる場合があります。
- 発生条件
以下の4条件を満たした場合に発生します。
- typedefを用いて型宣言を行っている。
- その型宣言にfar指定がある。
- そのtypedef型名を用いて関数のプロトタイプ宣言を行っている。
- そのプロトタイプ引数に配列[]を宣言している。
-----------------------------------------------------------------------
[例]
typedef unsigned int far UNIT;
void func(UNIT a[]);
void func(UNIT a[])
{
a[2]-1;
}
-----------------------------------------------------------------------
- 対処方法
以下の方法のいずれかで回避できます。
- typedefを使用しない。
--------------------------------------------------------------------
[例]
void func(unsigned int far a[]);
--------------------------------------------------------------------
- プロトタイプ引数を配列でなく*(ポインタ)で記述する。
--------------------------------------------------------------------
[例]
void func(unsigned int far *a);
--------------------------------------------------------------------
なお、本件は現在量産中のNC30WA V.3.00 Release 2では改修済みです。
NC30WA, NC30 ご使用上のお願い
MESCT-NC30WA-980816D
加算時に2で除算したとき
- 内容
2つのデータを加算後に2で除算した場合に不正なコードを出力する場合がありました。
- 発生条件
以下の5条件を満たした場合に発生します。
- 符号なしの1バイトデータもしくは2バイトデータを加算している。
- その加算データがキャスト等により型上げされている。
- その加算結果を2で割っている(もしくは右にシフトしている)。
- 格納先が演算後の結果より小さい型に格納されている。
- 格納先データが加算時のデータの右側のデータと同じである。
-----------------------------------------------------------------------
[例]
unsigned int i, j;
i = (unsigned int)(((unsigned long)j + i) / 2);
-----------------------------------------------------------------------
- 対処方法
右辺式のデータの内、格納先データと同一データを加算の左側に記述してください。なお、本件は現在量産中のNC30WA V.3.00 Release 2では改修済みです。