GCC が変な事を言い出した

本当に言い *出した*。警告が出ないことを確認してから commit してるので、commit 時点では出てなかったはず。GCC version 上げたっけ。そんな気もする。現在 4.0.2。4.0.1 → 4.0.2 で出現した bug か?アホな事を言ってしまった orz でもどうやって消そうこの警告。

jun@debian /tmp
$ grep . -n tmp.c
1:typedef unsigned char uchar;
2:#define IN_GR96(c) (0xA0 <= (uchar)(c) && (uchar)(c) <= 0xFF)
3:#include <stdlib.h>
5:int
6:main (int argc, char *argv[])
7:{
8: long i = strtol(argv[1], NULL, 16);
9: if (IN_GR96(i))
10: puts ("#t");
11: else
12: puts ("#f");
13:}
jun@debian /tmp
$ gcc -o tmp tmp.c
tmp.c: In function 'main':
tmp.c:9: warning: comparison is always true due to limited range of data type
jun@debian /tmp
$ ./tmp 7E
#f
jun@debian /tmp
$ ./tmp A5
#t

んー、行番号付き cat てどうやるんだっけ。

for がキモい

この for の構文はどうにかならんものか…何かと帯に短くたすきに長い。たすきが変換で出ない。