[Namazu-devel-ja 493] Re: Namazu 2.0.15 pre1

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2005年 7月 21日 (木) 02:02:52 JST


寺西です。

Takahiro Kambe wrote:
> 
> > > 1. ifの中で常に成立してしまう比較の除去
> >
> > 明示的にコードの範囲を指定しているので、冗長ですが 0xff までの比較は
> > 残っていても良いかなと思います。
> > # ウォーニングでちゃうのですか...。
> 「そげな比較のコードは無効ぢゃ」とウォーニング出す場合があるというか、
> gcc 3.xだと-Wallとかしなくても出したようです。

ぐは。そりゃ無意味なコードなんですけど、gcc 3.x は、厳しいんですね。
# って、手元の gcc は 3.2.2 ですけど出ません。あれ? 

> > > 2. 引数に char を回避
> >
> > 3. が上記の内容なら、こちらの修正は char を int にキャストしちゃう
> > ので、よろしくないのでは?
> > 無修正だとまずいでしょうけれども。
> これは、
> 
> util.c:93: warning: subscript has type `char'
> util.c:94: warning: subscript has type `char'
> 
> と、怒られる方でした。toupper(3)がプリプロセッサ・マクロで定義されてい
> て、配列をindexにcharを使っているためです。
> 
> 私の(今は通用しないかもしれない)古い記憶に、関数の引数にcharを使用する
> ことに害があっても利益なし、という格言があるのですが、はっきりとした理
> 由は、今思い出せません。:-(

これも toupper((unsigned char)c1) とかで良いのかなと思いましたが、
そうでもないのでしょうか?
# unsinged char も害がでるのでしょうかねぇ。

もっとも、toupper(3) の戻り値が int なので、以後の処理でも何かキャスト
しないといけない気はしますが...

というところで、その昔、tolower/strcasecmp 問題があって、
_nmz_tolower やらを作ったはずなんですが、toupper(3) 使ってて
いいのかな。
8bit文字は処理しないからかな。なら、toupper(c1) でも害はない!?
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内