誰に問いかけてるんだか・・・。
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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。