RENESAS TOOL NEWS 2005年06月01日 : RSO-M3T-NC30WA_1-050601D
Cコンパイラパッケージ M3T-NC308WAおよびM3T-NC30WA ご使用上のお願い
--labs関数およびabs関数について-- |
M16Cファミリ用Cコンパイラパッケージ M3T-NC308WAおよびM3T-NC30WAの
使用上の注意事項を連絡します。
- 該当製品
M3T-NC30WA V.1.00 Release 1 ~ V.5.30 Release 02
M3T-NC308WA V.1.00 Release 1 ~ V.5.40 Release 00
- 内容
labs関数またはabs関数を使用して絶対値を求めると、正しい値が得られない場合があります。
- 2.1 発生条件
- 以下の条件をすべて満たす場合に発生します。
| (1) |
標準ヘッダファイルstdlib.hをインクルードしている。 |
| (2) |
labs関数またはabs関数の引数に式を記述している。 |
- 2.2 発生例
-
--------------------------------------------------------------------
#include <stdlib.h> /* 発生条件 (1) */
unsigned int b=10;
unsigned int a=8;
unsigned int result;
void func(void)
{
result=abs(a - b); /* 発生条件 (2) */
}
--------------------------------------------------------------------
- 回避策
stdlib.hをインクルードした後に、プリプロセスコマンド#undef labsを使用してlabsマクロを、#undefを使用してabsマクロを無効にしてください。
例
--------------------------------------------------------------------
#include <stdlib.h>
#undef abs /* absマクロを無効にする */
unsigned int b=10;
unsigned int a=8;
unsigned int result;
void func(void)
{
result=abs( a-b );
}
--------------------------------------------------------------------
- 恒久対策
次期バージョンで改修する予定です。