2012/07/29

stdbool.hを使ってももういいよね

誰に問いかけてるんだか・・・。

C99になって、boolが定義されたstdbool.hというものが使えるようになった。
trueとかfalseもあるので、C++のbool型がそのまま載せ替えられる。

CodeSourceryのstdbool.hを見ると、_Boolをtypedefではなくdefineでboolにしていた。
目的が「置き換え」だからそうしたのかな。

では、_Bool自体はどうなっているのか。
もしかして、「typedef int _Bool;」なんてやってたらやだなー、と思ったが、CodeSourceryには_Boolの定義がなかったので、中でちゃんとやってるんだろうと思う。

そうなってくれていないと、trueで比較するところがあったら、置き換えないといかん。
なるべくfalseと比較するように実装しているつもりではあるが、忘れてるかもしれないし、借りてきたところはそうなってないかもしれない。

 

ただ、C99オプションを付けなくてもstdbool.hはincludeできるし、使えている。
ということは、_Bool型もC99オプションなしで使えるのだろう。
「for(int i, ・・・」みたいな書き方は、C99オプションなしだと怒られる。
そういうもん、ってことでいいのかな。

 

「int型でやりゃいいやん」といわれそうだけど、ライブラリによって戻り値の意味が異なるのはめんどくさいので、標準のものがあれば使いたいのだ。
あるライブラリでは戻り値0が成功だったり、別のライブラリではTRUEが成功だったりすると、レビューするときにライブラリのことを調べてからやらんといかんので、めんどくさい。
基本的に戻り値はboolにして、エラーが知りたければ何か用意する、でもいいかと思っている。

 

そういいつつ、今の実装も0がSUCCESSに置き換えてしまいそうな気がするが、まあそんなもんだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。