ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: C ユーザーガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
2.11.3 does_not_read_global_data
2.11.5 does_not_write_global_data
2.11.26 warn_missing_parameter_info
2.16.1 -I- オプションによる検索アルゴリズムの変更
2.18 Intel MMX および拡張 x86 プラットフォーム組み込み関数のためのコンパイラサポート
C コンパイラは、C 言語に多数の拡張機能を実装しています。
C コンパイラは、C99 規格の restrict キーワードの同義語として _Restrict キーワードをサポートします。restrict キーワードは、-xc99=all を指定する場合にしか使用できませんが、_Restrict キーワードは、-xc99=none と -xc99=all のどちらを指定する場合でも使用できます。
サポートされる C99 機能の詳細は、表 C-6 を参照してください。
__asm キーワード (先頭の 2 つの下線に注意) は、asm キーワードと同義語です。__asm キーワードではなく asm を使用し、-Xc モードでコンパイルを実行する場合、コンパイラは警告を発行します。-Xc モードで _ _asm を使用する場合、警告メッセージは表示されません。_ _asm 文の書式は次のようになります。
__asm("string");
ここで、string は有効なアセンブリ言語文です。
この文は、与えられたアセンブラテキストをアセンブリファイルに直接出力します。関数スコープではなくファイルスコープで宣言された基本的な asm 文は、「グローバル asm 文」と呼ばれます。ほかのコンパイラはこの文を「トップレベル」asm 文と呼びます。
グローバル asm 文は、指定された順に出力されます。つまり、互いの相対的な順序が維持され、周囲の関数に対する相対位置も維持されます。
より高い最適化レベルでは、参照されていないと判断した関数をコンパイラが削除することがあります。グローバルアセンブリ言語文内からどの関数が参照されているかをコンパイラは評価できないため、間違って削除される可能性があります。
テンプレートとオペランドの仕様を提供する、拡張された asm 文は、グローバルにすることは許可されません。__asm および __asm__ はキーワード asm の同義語であり、互いに入れ替えて使用できます。
アーキテクチャーに固有の命令を指定するときは、対応する -xarch 値を指定してコンパイルエラーを回避する必要がある場合があります。
__inline および __inline__ はキーワード inline の同義語であり、互いに入れ替えて使用できます (C 規格、6.4.1 節)。
__builtin_constant_p はコンパイラの組み込み関数です。これは単一の数値引数を取り、引数がコンパイル時の定数である場合は 1 を返します。戻り値 0 は、その引数がコンパイル時の定数であるかどうかをコンパイラが判定できないことを意味します。この組み込み関数の標準的な使用法は、マクロ内での手動のコンパイル時最適化です。
__FUNCTION__ と __PRETTY_FUNCTION__ は事前に定義された識別子であり、字句を包含する関数の名前が含まれています。これらは、c99 の定義済みの識別子である __func__ に相当する機能です。Oracle Solaris プラットフォームでは、__FUNCTION__ と __PRETTY_FUNCTION__ は -Xs および -Xc モードで使用できません。