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

もうやらなくていい昔のコーディングテクニックあれこれ」記事へのコメント

  • by chess (7856) on 2009年05月04日 15時39分 (#1559047)

    for文の初期化項での変数スコープがfor文外でも有効だった件。

    可搬性のために
    #define for if(0); else for
    とかやってたよね。

    • 特殊というか、極めて一般的なVC6がそういう動きをしてませんでしたっけ。
      VC2005/2008はデフォルトでは言語仕様通りだけど、つじつま合わせのオプションがあったりします。

      親コメント
      • C++ の規約制定時にドラフト案のまま実装したものの、仕様が変わっちゃった上にリリースしちゃったために変えるに変えられずずっと維持されたパターンだったはず。

        親コメント
        • VC2003時代にどっかで読んだ話じゃ、
          「MFCがそれ(for文の外までスコープになる)前提で書かれており、
           しかもそれがあちこちにあるから今のところデフォルトで規格に合わない動きにしている」
          とかなんとか。

          親コメント
          • by Anonymous Coward
            んなこたーないだろう。
            VC7(2002)の時点でMFCはATLとマージされて全面的に手が入ったので、ついでに直せるでしょう。

            デフォルトがVC6と同じ挙動になっている理由は、VC6のユーザが書いた既存のコードのため、でしょう。
    • by Anonymous Coward

      その挙動ってARMをお手本に実装したコンパイラですよね。90年代にはそこそこあったような記憶があります。コンパイラオプションでスコープを限定出来たりしました。

    • by Anonymous Coward
      javascriptにはブロックレベルスコープが存在しないので,
      >for文の初期化項での変数スコープがfor文外でも有効だった件。
      が存在してます.

      参考:http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs03/ajaxjs03_02.html

日本発のオープンソースソフトウェアは42件 -- ある官僚

処理中...