ぱっと見て「ヘタだなぁ」と思うコード その6
■ このスレッドは過去ログ倉庫に格納されています
0449デフォルトの名無しさん
2007/10/28(日) 14:17:04strcmp(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) とか書くほうが良い。
いずれにせよ左辺値に定数を持ってくる奴はバカ。
■ このスレッドは過去ログ倉庫に格納されています