変数を定数値として扱う

キャストすることによって「定数値であるべき変数」に対して代入を抑制する方法。

#ifndef __cplusplus
extern
#else
extern "C"
#endif
signed char _mb_cur_max;
#define MB_CUR_MAX  ((int)_mb_cur_max)

...

MB_CUR_MAXマクロの定義で、int型にキャストしているのは、こうしておかないとMB_CUR_MAXに代入したり、インクリメントしたりといった誤操作ができてしまうからです。規格の要件にはありませんが、MB_CUR_MAXは右辺値であるべきです。

http://libc.blog47.fc2.com/blog-entry-56.html