>>397


strcmp(str1, str2) は文字列に対する str1 - str2 の結果を整数値で
返しているのであって真偽を返している訳ではない。
で、(str1 - str2 == 0) は (str1 == str2) であり、str1 - str2 < 0 は str1 < str2 であるから

#define StrEq(s1, s2) !strcmp(s1, s2)

なんかより

#define STRCMP(S1,EQ,S2) (strcmp((S1), (S2)) EQ 0)

として、 if( STRCMP(s1, ==, s2) ) とか if( STRCMP(s1, <, s2) とか書くほうが良い。






いずれにせよ左辺値に定数を持ってくる奴はバカ。