CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C言語だって成長する! 標準がC11(C1X)にアップデート

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

C言語の標準がC11(C1X)にアップデートされた。
Unicode、ジェネリックマクロ、マルチスレッド、無名構造体/共用体などなど。

もともとC11については下の記事で知った。
ISO Updates C Standard - Slashdot

早速、規格を見てみようと思ったのだけど、
正式なものはちょっとお高いので、元にしたドラフト版を確認する事にした。
www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

...と、見てみたら600頁以上あってしんどいので挫折。
代わりに wikipediaにアップデート内容の記事を見てみた。
C1X - Wikipedia, the free encyclopedia

Alignment specification
C言語だとコンパイル先の環境の実メモリに合わせて、
コンパイラのプラグマなどでローカルに指定してたのが、
C言語としてサポートしたという事だろう。

The _Noreturn function specifier(10/28修正)
戻らない関数の宣言。
下に quick_exit()もあるし、よっぽど終了失敗する事が多いのだろう。
N1570にあったサンプルコードを下につける。

_Noreturn void f () {
abort(); // ok
}
_Noreturn void g (int i) { // causes undefined behavior if i <= 0
if (i > 0) abort();
}

Type-generic expressions using the _Generic keyword(10/28修正)
名前からピンとこなかったけど、汎用マクロかな。
Cのマクロで、C++の関数オーバロードのようなことをする。
コードで見たほうが早いか。

#define cbrt(X) _Generic((X), long double: cbrtl, \
                              default: cbrt, \
                              float: cbrtf)(X)

Multithreading support
マルチスレッド関係。Mutex、condition variable、threadとからしい。

Improved Unicode support
unicodeサポート。
char16_t/char32_tにUTF-16/UTF-32を入れる。
文字列は u"abc" のように書く。

Removal of the gets function
gets関数の廃止。
代用には gets_s がいいらしいし、使えなければ fgets で。
よっぽど悪用されやすかったのだろう。

Bounds-checking interfaces (Annex K)
境界チェック。
gets_s のように _s を付けた関数が増えてる。
Visual-C++のManaged-C と思えばいいのかな?

Analyzability features (Annex L).
デバッガ関係かな?

More macros for querying the characteristics of floating point types
浮動少数に関するマクロの追加。
仮数や指数がわかるようになったらしが、C99に無かったっけ?

Anonymous structures and unions
無名構造体、共用体。
ネストする時に便利。

struct T { int 
  tag;
  union {
    float x;
    int n;
  };
};.

Static assertions
コンパイル時にプリプロセッサで assert する。
boostのBOOST_STATIC_ASSERTに相当するっぽい。

An exclusive create-and-open mode ("…x") for fopen
排他的 fopen。
ロックファイルとして使うといいみたい。
POSIXの O_CREAT|O_EXCL 相当らしい。

The quick_exit function as a third way to terminate a program
exitに失敗するようなケースで終了させる方法。
そんなことあるのか。。

Macros for the construction of complex values
複素数関係のマクロ。


プログラミング言語C 第2版 ANSI規格準拠プログラミング言語C 第2版 ANSI規格準拠
(1989/06/15)
B.W. カーニハン、D.M. リッチー 他

商品詳細を見る

Boost C++ LibrariesプログラミングBoost C++ Librariesプログラミング
(2007/07)
稲葉 一浩

商品詳細を見る

実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)
(2006/07)
岸 哲夫

商品詳細を見る
スポンサーサイト

 | HOME |  »

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。