パスワードを忘れた? アカウント作成
1110379 story
プログラミング

ISO、C言語の新規格「C1X」を制定 27

ストーリー by hylom
10年ぶり 部門より
eggy 曰く、

国際標準化機構(ISO)が、C言語の新規格「C1X」を制定した。正式名称は「ISO/IEC 9899:2011」となっている(本家/.The H記事)。

C++言語との互換性に優れ、マルチスレッド機能、ISO/IEC TR 19769:2004に基づくUnicodeサポート、浮動小数点型の特性を調べるマクロや静的アサーション機能などの新機能を追加しているとのこと。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 1.ネームスペース
    2.アクセス修飾子(private/public/protectedなど)の導入
    3.プロトタイプ宣言の廃止
    4.型チェック付き typedef
    5.無名関数

    2、3を合わせてヘッダファイルの簡略化

    • by Anonymous Coward

      コモンブロックの導入

  • by dsb (29217) on 2011年12月27日 15時44分 (#2072743)

    Wikipedia からたどれるリンクにFinal Draft の PDF [open-std.org] がありました。

    threads.h とか追加された keyword (_Generic とか _Static_assert とか) を
    追ってみるだけでもなかなか楽しめます。

    • by Anonymous Coward

      > _Generic
      C99ではtgmath.hを実装するために各処理系が独自拡張しなさいとか無茶振りされていたのがようやく解消されたのか。

  • by Anonymous Coward on 2011年12月27日 13時53分 (#2072674)

    「ISO/IEC 9899:2011」が2011年に正式発行されたならもう「1X」じゃないだろ。
    > C++言語との互換性に優れ、
    C99の機能のいくつかは(_Complex型とかrestrictedポインタとか) C++11にもバックポートされなかったしいくつかは(_Bool型とか) C++と必ずしも互換性のない形で導入された。C11でさらに差が開いたんじゃないの?

    • by Anonymous Coward on 2011年12月27日 23時23分 (#2073029)
      個人的にC++のCに対する互換性の破れで一番困るのは
      C99のdesignated initializerdがC++のコンパイラで
      コンパイルエラーになる事ですね

      typede struct _hoge {
            int a;
            char b[8];
      } hoge_t;

      #define hoge_default { .a = 10, b = { [5] = 3, [7] = 1, }, }

      hoge_t x = hoge_default;

      てのが通らない
      親コメント
    • by Anonymous Coward

      _ComplexはC++ではstd::complexを使えばいい。C++11で、_Complexとメモリレイアウト互換になるようわざわざ規定が追加された。

  • by Anonymous Coward on 2011年12月28日 1時39分 (#2073123)

    新仕様を安心して使えるのは何年か先の話なんでしょうけど、それ以前に新仕様を使う機会があるのかなぁ・・と思ったり・・。

    未だに開発の大部分がCって生活しているけど、数年以上継続してるプロジェクトばかり。
    継続案件で新仕様対応なんて考えにくいからチャンスは新規開発なんだけど、新規案件があんまりないんですよねぇ。
    とはいえ、C99は普通に使っているんだし、10年もすれば一般的になるのかな?

    ただ、ドラフト版の仕様のPDF見る限り、スレッドとatomic関係がかなり強化されているって感じでちょっと試してみたいかも。
    ※まぁ、pthreadとできることがそんなに変わらん気がするけど・・・多分読み落としてるところに色々あるんだろう。英語であのページ量は余裕あるときじゃないと読みきれないし理解できんorz

    • by Anonymous Coward
      周りも継続案件ばっかりで、誰も実務で書いたこと無いC99というリスクよりも、安全をとり続けそうな気がしますね。
      コンパイラは対応してるけど規約やレビュアーが対応してないとか。
    • by Anonymous Coward

      うちはいまだにVC6でアプリ開発している。VC6は数年かけて人数分ライセンスを購入したけど、以降2005、2008、2010はポンポン新しいのが出るから数が揃わない。

      ライブラリはそのまま、Cコンパイラだけ無償アップデートしてくれないかなー

      • by Anonymous Coward

        MSVCは2010になってもC99にすら対応していないのでこのストーリー的にはどうでもいい。

        • by Anonymous Coward

          そういう状態だとISO規格だろうがなんだろうが、実質gccだけでしか使えない方言だよなぁ。

          そろそろCもC++もやたらマニア好みの仕様ばかり増やすのを止めてメジャーな実装とユーザーが追いつくのを待った方がいいんでは。

          • by Anonymous Coward

            > 実質gccだけ
            最近はclangもあるよ!

        • by Anonymous Coward

          MSVCは、C++11 (C++0x)なら追っかけるつもりが多少あるみたいだから、C++11にも入っている分はそのうち使えるようになるはず(だといいなあ)。

          • by Anonymous Coward

            Windowsの文化として、かなり早くからC++に入れ込んできた(自社ライブラリをC++クラスで作り上げた)ことを考えると、C++の発展に追従する可能性はあるけど、Cの発展に追従する可能性は殆ど無い気がする。

            #Cが使われているのは、デバドラだけ。そこも慣れた開発者はC++の書きやすさだけ導入してるし。

  • by Anonymous Coward on 2011年12月27日 13時53分 (#2072675)

    C言語で Windows と Linux の両方で使えるマルチスレッドのライブラリを何かで見たけどそんな感じになるのか?
    それとも pthread(POSIX thread) みたいのをやるのか。

  • by Anonymous Coward on 2011年12月27日 14時52分 (#2072718)

    CHF 338.00ってことは約28,000円かぁ。

  • by Anonymous Coward on 2011年12月27日 15時11分 (#2072728)

    /**/コメントのネスト・//コメント・true/falseと==できるbool型・longlong等による64bit型さえあれば・・・

    • long longとかみたいな曖昧な指定より長さを直接指定するのがいいな。
      C++で例えるなら「INT<128> hoge;」みたいなの。長さ指定を省略すると普通のintと同じみたいな。

      親コメント
      • by Anonymous Coward
        C99 の int32_t とかでいいじゃないですか。
        int_least32_t とかもあります。

        任意のサイズは指定できないし、int128 はないけど。
        • by Anonymous Coward

          _boolとか、既存のコードに配慮したのは分かるんですが気持ち悪いんですよね、longlongも最高とは思わないですが。
          int≠longに目をつぶればshort=16bit / int=32bit / long=64bit が一番自然なんだけどな。
          あとC99は他にも色々拡張されすぎている感じがして…いまだ「プログラミング言語C」の日本語訳も出てませんしね。

          • by Anonymous Coward

            stdbool.hをインクルードしなさい。
            # C++と違ってANSI以前との互換性のためヘッダファイルを必ずしもインクルードする必要のない処理系が多いから餌として用意したのかしら

    • by Anonymous Coward

      標準化されたalignment指定とか無名構造体、共用体(いずれもC11の新機能)もほしくない?

      • by Anonymous Coward

        alignmentも泣かされるよね
        でもそうするとエンディアンも揃えないと不十分とかなってハードを効率よく利用する理念から外れるかも

  • by Anonymous Coward on 2011年12月27日 17時03分 (#2072767)

    C99とC1Xの詳しい日本語の説明書は出版されるのかにゃ。

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...