パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

GitHubで最も「醜いハック」が使われているのはC言語」記事へのコメント

  • by Anonymous Coward on 2015年05月09日 17時43分 (#2811326)

    はい、クラス/構造体に入れるの面倒でグローバル転がしてテストしてそのまま
    なんてのはよくやっちゃいます。
    あとはデバッガで追いやすいようにローカルに使われるものを広域変数にしといてそのままとか、
    ゼロ割発生直前でチェックして済ますとか(元から絶たない)
    他になにかuglyな例はあるでしょうか。

    • by Anonymous Coward on 2015年05月09日 19時16分 (#2811375)

      さっさと引退してください・・・

      親コメント
    • by Anonymous Coward

      ・引数を考えるのが面倒で大域変数で渡した
      ・引数が必要なのは明白だが、何をもらえばいいのかわからないのでvoid *にしておいた
      ・構造体の後ろにダミーをつけると落ちなくなった

      • by Anonymous Coward

        上のは8ビット時代の話だが、今でもやるのは引数に再代入してgotoか

        • 流石に、PICのようにスタック段数が貧困なプロセッサ相手なら仕方ないですが、普通はそういう真似はやらない気が…(-_-;
          スタックに余り割けない環境であったとしても、関数を細分化するとか、タスク自体を減らすとかの方向に行くような。
          # RTOSで8MBあれば普通はそういう事考えないで済む気がする。

          親コメント
        • by Anonymous Coward

          末尾最適化はコンパイラの仕事かと。
          アホなコンパイラしか使えない場合はその限りではないけれども。

          • (Alfred Vaino) Aho なコンパイラ…そそる。じゅるる

            親コメント
          • by Anonymous Coward

            末尾最適化がどう関係するんですか?

            • by Anonymous Coward

              そのテクニックが手作業による末尾再帰最適化だからですよ。

              関数内で引数を設定しなおして頭にgotoするのは、その箇所で自身を再帰で呼んで戻り値をそのままreturnするのとほぼ同じ事。
              これについて末尾再帰最適化が掛かると頭にgotoするようなコードに自動変換され、スタックの消費量その他が節約される。

              • by Anonymous Coward

                誰が頭にgotoするんですか?

              • by Anonymous Coward

                理解できないのにコメントするのは自分の無知を晒すだけですよ

              • by Anonymous Coward

                if文の本体などスコープの内側にgotoするのに、末尾再帰が何の関係があるんですか?

      • by Anonymous Coward

        ・printf入れたら落ちなくなった
        が抜けてるぞ

        • by Anonymous Coward

          ugly hack とはちょっと違うんですが、コンパイラのコード生成がバグっててprintf(というか関数呼び出し)を入れると正常に動作する(コードを吐く)という現象には遭遇したことがあります。
          妙に利口でおなじファイル内に何もしない関数を定義して呼び出しても最適化で削除されてしまって動かなかったんですよねぇ。

    • by Anonymous Coward

      ugly なだけで hack じゃないじゃないか!

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

処理中...