2011-01-05

http://anond.hatelabo.jp/20110105180211

から、後発企画=C++へのコンパチビリティでしょ?

#define false 0

としないで

#ifdef XXX

#define false 0

#endif

とするか?

なんで、ifdefで定義そのものをOFFれるかっていうと、まれにfalseを理解できるCコンパイラいるからでしょ?(つまりC++コンパイラを使ってCをコンパイル通すケース)

からC++がなかった時代はそれでいいけど、C++ができた時代には、コーディング規約を見なおさないといけないという話でしょ?

ちなみに#define FALSEを残すのは MSコンパイラへのコンパチビリティ。MS系の旧ライブラリを通すときは一応FALSEで渡したほうが良い。

作り直したタイミングで、新しい企画に対応していかないと、いつかどこかで、対応できなくなるし、そもそも、falseは有名すぎる。

 

そんな、改変すればいい特殊ルールいつまでも残しておいて、組み込みは特殊だからとか言うなって話はあるよね。

普通の一般プログラマでも、改変できる範囲は最近は多くなってきているのに、わざと、さわれれない旧ルールを残し続ける。

コードが同一なら、そらしょうがないけど、バージョンアップで、新規作り直しのタイミングで変えないとしたら、それはおかしい

しい人入れなきゃいけけないし、短期的に人を増やすタイミングなんていくらでもある。

そういう時に、ダイナミックに人を追加できないようなコーディングルールにする意味が分からない。

コーディングルールを決めるのは、設計担当で、人のアサインの事まで考えて、ルールを決めなきゃいけないんだから、一般のC++プログラマを短期的に追加できるルールに変更すべき

それが、大きな問題になるならわかるけど、falseをやめて、ON/OFFにする もできない理由は思いつかない。(作り直しだから

記事への反応 -
  • #ifdef XXX #define false 0 #endif ならわかる #ifdef XXX #define my_false 0 #endif みたいなひとは何がしたいんだろう・・・ 後発企画への互換性とか考えないんだろうか・・・ 大きなシステムで、独自...

    • 一応書いておくが、組み込みでは意味がある時もある。 回路上の1/0なんてちょっとした改修ですぐに変わるからね。 特定のハードモジュールに対する判定をパッケージとして閉じ込める...

      • それはON/OFFじゃなくて? true/false は真偽値なので if(false){ }else{ } がelse節になる必要がある。 if(local_false){ }else{ } にがthen節なるようなfalseを定義するべきじゃない。 回路の1/0判定について...

        • C言語にTRUE/FALSEなんて仕様ないんですけど。

          • だから、後発企画=C++へのコンパチビリティでしょ? #define false 0 としないで #ifdef XXX #define false 0 #endif とするか? なんで、ifdefで定義そのものをOFFれるかっていうと、まれにfalseを理解...

            • おれは組み込み云々を書いた増田なんだが、もともと「my_false」の話してたよね? そういう独自定義の話でないの? そりゃ組み込みなら普通はON/OFFと表現するが、「#define OFF 0」とかあん...

              • たぶん、元増田さんは、言語仕様としてのBOOL値を独自定義するなと言いたかったのだろうけれど。 やった人が、BOOL値として考えてmy_falseを定義したかどうかは微妙だよね。 むしろmy_false...

                • たぶん、元増田さんは、言語仕様としてのBOOL値を独自定義するなと言いたかったのだろうけれど。 そうではなくて、独自規格から始まったものが後日改変されて、正しく定義され規...

      • 組み込みの世界ってキモイなー 絶対触りたくないな…

        • 組み込みの世界ってキモイなー テスト基盤と実機基盤で判定が逆とか普通にあるし、電圧判定の閾値が違うとかもざら。 テストと実機で同じコードが使えるように、大抵のものは置き...

    • 「いまどき」というならC99だしこうなんだが…。 #include <stdbool.h>int main() { { bool a = false; // 0 bool b = 0; // 0 bool c = true; // 1 bool d = 1; // 1 bool e = 2; // 1 ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん