Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

C11 の機能

この付録では、現在 C コンパイラでサポートされている『Programming Language - C (ISO/IEC 9899:2011)』規格の機能について説明します。

-std=c11 フラグは、コンパイラによる 9899:2011 ISO/C の認識を制御します。-std フラグの構文の詳細については、–std=valueを参照してください。

C.1 キーワード

  • _Alignas

  • _Alignof

  • _Noreturn

  • _Static_assert

  • _Thread_local

C.2 サポートされている C11 の機能

  • _Alignas 指定子

  • _Alignof 演算子

  • _Noreturn

  • _Static_assert

  • _Thread_local 記憶指定子

  • typedef 再定義の許可

  • 無名構造体/共用体

  • UCN 文字セットの更新の許可

  • __STDC_ANALYZABLE__ マクロ

  • __STDC_NO_ATOMICS__ マクロ

  • __STDC_NO_THREADS__ マクロ

C.2.1 _Alignas 指定子

機能: 6.7.5 アライメント指定子

_Alignas ( type-name )
_Alignas ( constant-expression )
  

_Alignas 指定子は、typedef の宣言、ビットフィールド、関数、パラメータ、または register 記憶クラス指定子で宣言されたオブジェクトでは使用できません。

定数式は整数定数式に評価されます。定数式は、1 から 128 までの間の 2 のべき乗である整数定数式に評価される必要があります。有効な値は、0、1、2、4、8、16、32、64、および 128 です。この値は、宣言対象のオブジェクトまたはメンバーの型に必要なアライメントと同等かそれ以上に厳密なアライメントに評価される必要があります。

_Alignas ( type-name) は _Alignas (_Alignof (type-name)) と同義です。

アライメント指定子 0 には効果がありません。

有効なアライメントは、もっとも厳密なアライメント指定子のアライメントです。

アライメント指定子で宣言されたオブジェクトを指定するときには、そのオブジェクトのその他のすべての宣言で、同じアライメント指定子を使用するか、またはアライメント指定子を使用しないでおく必要があります。オブジェクトのアライメントは、同じオブジェクトを宣言するすべてのソースファイルで同一の方法で指定する必要があり、このように指定しないと動作が未定義になります。

C.2.2 _Alignof 演算子

機能: 6.5.3.4 _Alignof 演算子

_Alignof ( type-name )

_Alignof 演算子は、そのオペランドの型のアライメント要件を示す整数定数に評価されます。オペランドは評価されません。_Alignof 演算子を関数または不完全な型で使用することはできません。

C.2.3 _Noreturn

機能: 6.7.4 関数指定子 _Noreturn

_Noreturn 指定子は、戻らない関数の宣言に次のように配置します。

_Noreturn void leave () {
    abort();
  }

C.2.4 _Static_assert

機能: 6.7.10 静的アサーション

_Static_assert ( constant-expression , string-literal ) ;

C.2.5 汎用文字名 (UCN)

ISO/IEC 9899:2011 の Annex D により、UCN で文字セットの更新が許可されています。許可されているすべての文字の一覧については、ISO/IEC 9899:2011 Annex D を参照してください。