JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: C ユーザーガイド
search filter icon
search icon

ドキュメントの情報

はじめに

1.  C コンパイラの紹介

2.  C コンパイラ実装に固有の情報

3.  C コードの並列化

4.  lint ソースコード検査プログラム

5.  型に基づく別名解析

6.  ISO C への移行

7.  64 ビット環境に対応するアプリケーションへの変換

8.  cscope: 対話的な C プログラムの検査

A.  機能別コンパイラオプション

A.1 機能別に見たオプションの要約

A.1.1 最適化とパフォーマンスのオプション

A.1.2 コンパイル時とリンク時のオプション

A.1.3 データ境界整列のオプション

A.1.4 数値と浮動小数点のオプション

A.1.5 並列化のオプション

A.1.6 ソースコードのオプション

A.1.7 コンパイル済みコードのオプション

A.1.8 コンパイルモードのオプション

A.1.9 診断のオプション

A.1.10 デバッグオプション

A.1.11 リンクとライブラリのオプション

A.1.12 対象プラットフォームのオプション

A.1.13 x86 固有のオプション

A.1.14 ライセンスオプション

A.1.15 廃止オプション

B.  C コンパイラオプションリファレンス

C.  ISO/IEC C 99 の処理系定義の動作

D.  C99 でサポートされている機能

E.  ISO/IEC C90 の処理系定義の動作

F.  ISO C データ表現

G.  パフォーマンスチューニング

H.  K&R Solaris Studio C と Solaris Studio ISO C の違い

索引

A.1 機能別に見たオプションの要約

この節には、参照しやすいように、コンパイラオプションが機能別に分類されています。各オプションの詳細は、表 A-15 および付録 B C コンパイラオプションリファレンス を参照してください。フラグによっては、複数の使用目的があるため、複数の個所に記載されているものがあります。

これらのオプションは、特に記載がないかぎりすべてのプラットフォームに適用されます。Solaris SPARC システム版のオペレーティングシステムに特有の機能は (SPARC) として表記され、x64 システム版のオペレーティングシステムに特有の機能は (x86) として表記されます。Solaris プラットフォームのみに適用されるオプションには、(Solaris) というマークが付きます。Linux プラットフォームのみを対象とするオプションには、(Linux) というマークが付きます。

A.1.1 最適化とパフォーマンスのオプション

表 A-1 最適化とパフォーマンスのオプション表

オプション
処理
-fast
実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。
-fma
(SPARC) 浮動小数点の積和演算 (FMA) 命令の自動生成を有 効にします。
-p
プロファイルデータ収集用のオブジェクトコードを用意します。
-xalias_level
コンパイラが型ベースの別名の分析と最適化を実行します。
-xannotate
(Solaris) binopt(1) のようなバイナリ変更ツールを使用してあとで変換できるバイナリを作成するようコンパイラに指示します。
-xbinopt
あとで最適化、変換、分析を行うために、バイナリを準備します。
-xbuiltin
標準ライブラリ関数を呼び出すコードの最適化率を上げます。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xF
リンカーによるデータと関数の順序の並べ替えを有効にします。
-xhwcprof
(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。
-xinline
指定された関数だけをインライン化します。
-xinstrument
スレッドアナライザで分析するために、プログラムをコンパイルして計測します。
-xipo
内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。
-xipo_archive
ファイル間の最適化にアーカイブ (.a) ライブラリを含める
-xjobs
コンパイラが生成するプロセスの数を設定します。
-xlibmil
実行速度を上げるため、一部のライブラリルーチンをインライン化します。
-xlic_lib=sunperf
Sun のパフォーマンスライブラリにリンクします。
-xlinkopt
再配置可能なオブジェクトファイルのリンク時の最適化を実行します。
-xlibmopt
最適化された数学ルーチンのライブラリを使用します。
-xmaxopt
このコマンドは、pragma opt のレベルを指定されたレベルに限定します。
-xnolibmil
数学ライブラリのルーチンをインライン化しません。
-xnolibmopt
最適化された数学ルーチンのライブラリを使用しません。
-x0
オブジェクトコードを最適化します。
-xnorunpath
実行可能ファイル内の共有ライブラリの実行時検索パスのインクルードを抑止します。
-xpagesize
スタックとヒープ用の優先ページサイズを設定します。
-xpagesize_stack
スタック用の優先ページサイズを設定します。
-xpagesize_heap
ヒープ用の優先ページサイズを設定します。
-xpch
ソースファイルが共通インクルードファイルセットを共有しているようなアプリケーションのコンパイル時間を短縮します。
-xpec
自動チューニングシステム (Automatic Tuning System、ATS) と組み合わせて使用できる、移植可能な実行可能コード (Portable Executable Code、PEC) バイナリを生成します。詳細は、http://cooltools.sunsource.net を参照してください。
-xpchstop
-xpch とともに使用して、活性文字列の最後のインクルードファイルを指定します。
-xpentium
(x86) Pentium プロセッサ用に最適化を行います。
-xprefetch
先読み命令を有効にします。
-xprefetch_level
-xprefetch=auto で設定される先読み命令の自動挿入の優先度を制御します。
-xprefetch_auto_type
間接先読み命令の生成方法を制御します。
-xprofile
プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
-xprofile_ircache
-xprofile=collect 段階で保存されたコンパイルデータを再利用して、-xprofile=use 段階のコンパイル時間を向上します。
-xprofile_pathmap
単一のプロファイルディレクトリで複数のプログラムまたは共有ライブラリをサポートします。
-xrestrict
ポインタ値の関数引数を制限付きポインタとして扱います。
-xsafe
(SPARC) メモリーに関するトラップが発生しないことを前提にします。
-xspace
コードサイズを増やすループの最適化や並列化を行いません。
-xunroll
ループを n 回展開するようオプティマイザに指示します。

A.1.2 コンパイル時とリンク時のオプション

次の表は、リンク時とコンパイル時の両方に指定する必要があるオプションをまとめています。

表 A-2 コンパイル時とリンク時のオプション表

オプション
処理
-fast
実行可能コードの速度を向上させるコンパイルオプションの組み合わせを選択します。
-m32|-m64
コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。
-mt
-D_REENTRANT -lthread に展開されるマクロオプションです。
-p
prof(1) がプロファイルデータを収集するためのオブジェクトコードを作成します。
-xarch
命令セットアーキテクチャーを指定します。
-xautopar
複数プロセッサ用の自動並列化を有効にします。
-xhwcprof
(SPARC) コンパイラのハードウェアカウンタによるプロファイリングのサポートを有効にします。
-xipo
内部手続き解析パスを呼び出すことにより、プログラム全体の最適化を実行します。
-xlinkopt
再配置可能なオブジェクトファイルのリンク時の最適化を実行します。
-xmemalign
(SPARC) 想定するメモリー境界整列の最大値と、境界整列に失敗したデータがアクセスされた際の動作を指定します。
-xopenmp
明示的な並列化のための OpenMP インタフェースをサポートします。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。
-xpagesize
スタックとヒープ用の優先ページサイズを設定します。
-xpagesize_stack
スタック用の優先ページサイズを設定します。
-xpagesize_heap
ヒープ用の優先ページサイズを設定します。
-xpg
gprof(1) によるプロファイルの準備として、データを収集するためのオブジェクトコードを生成します。
-xprofile
プロファイルのデータを収集、または最適化のためにプロファイルを使用します。
-xvector=lib
ベクトルライブラリ関数を自動的に呼び出すようにします。

A.1.3 データ境界整列のオプション

表 A-3 データ境界整列のオプション表

オプション
処理
-xchar_byte_order
複数文字からなる定数である文字を指定されたバイト順序で配置することにより、整定数を生成します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xmemalign
(SPARC) 想定するメモリー境界整列の最大値と、境界整列に失敗したデータがアクセスされた際の動作を指定します。
-xopenmp
明示的な並列化のための OpenMP インタフェースをサポートします。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。

A.1.4 数値と浮動小数点のオプション

表 A-4 数値と浮動小数点のオプション表

オプション
処理
-flteval
(x86) 浮動小数点の評価を制御します。
-fma
(SPARC) 浮動小数点の積和演算 (FMA) 命令の自動生成を有 効にします。
-fnonstd
浮動小数点演算ハードウェアの非標準の初期化を行います。
-fns
非標準の浮動小数点モードに切り替えます。
-fprecision
(x86) 浮動小数点制御ワードの丸め精度モードのビットを初期化します。
-fround
プログラム初期化中に、実行時に確立される IEEE 754 丸めモードを設定します。
-fsimple
オプティマイザが浮動小数点演算に関する前提事項を単純化できるようにします。
-fsingle
float 式を倍精度ではなく単精度で評価します。
-fstore
(x86) 浮動小数点式または関数の値を、代入式の左辺値の型に変換します。
-ftrap
起動時に有効になる IEEE 754 トラップモードを設定します。
-nofstore
(x86) 浮動小数点式または関数の値を、代入式の左辺値の型に変換しません。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xlibmieee
例外が起きた場合の数学ルーチンの戻り値を強制的に IEEE 754 形式にします。
-xsfpconst
接尾辞のない浮動小数点定数を単精度で表します。
-xvector
ベクトルライブラリ関数を自動的に呼び出すようにします。

A.1.5 並列化のオプション

表 A-5 並列化のオプション表

オプション
処理
-mt
-D_REENTRANT -lthread に展開されるマクロオプションです。
-xautopar
複数プロセッサ用の自動並列化を有効にします。
-xcheck
スタックオーバーフローに関する実行時検査を追加し、ローカル変数を初期化します。
-xdepend
ループの繰り返し内部でのデータ依存性の解析およびループ再構成を実行します。
-xloopinfo
並列化されているループとされていないループを示します。
-xopenmp
明示的な並列化のための OpenMP インタフェースをサポートします。このインタフェースには、ソースコード指令セット、実行時ライブラリルーチン、環境変数などが含まれます。
-xreduction
自動並列化中の縮約の認識を有効にします。
-xrestrict
ポインタ値の関数パラメータを制限付きのポインタとして扱います。
-xvpara
#pragma MP 指令が指定されているが、正しく並列化指定されていないループについて警告を出します。
-xthreadvar
スレッドローカルな変数の実装を制御します。
-Zll
lock_lint 用にプログラムデータベースだけ作成して、実行可能なコードの生成は行いません。

A.1.6 ソースコードのオプション

表 A-6 ソースコードのオプション表

オプション
処理
-A
#assert 前処理指令に似せて、指定の tokens を使用し name を述語として関連付けます。
-C
C プリプロセッサがコメントを削除しないようにします。ただし前処理指令の行にあるコメントは削除されます。
-D
#define 前処理指令に似せて、指定の tokens を使用し name を関連付けます。
-E
プリプロセッサのみでソースファイルを処理し、出力を stdout に送ります。
-fd
K&R 形式の関数の宣言や定義を報告します。
-H
現在のコンパイルでインクルードされたファイルのパス名を 1 行に 1 つずつ標準エラーに表示します。
-I
ディレクトリをリストに追加します。このリストは相対ファイル名で指定される #include ファイルを検索するときのリストです。
-include
コンパイラは引数 filename を、主要なソースファイルの 1 行目に記述されているかのように #include プリプロセッサ指令として処理します。
-P
ソースファイルのプリプロセッサ処理のみを行います。
-U
初期定義されているプリプロセッサシンボル name; をすべて削除します。
-X
ANSI/ISO C に準拠する度合いを指定します。
-xCC
C++ 形式のコメントを受け入れます。
-xc99
サポートされる C99 機能をコンパイラで認識させるかどうかを制御します。
-xchar
文字が符号なしと定義されるシステムからの移行を支援します。
-xcsi
C コンパイラが、ISO C ソース文字コードの要件に準拠していないロケールで記述されたソースコードを受け付けることを可能にします。
-xM
指定した C プログラムに対してプリプロセッサだけを実行します。その際、メイクファイルの依存関係を生成してその結果を標準出力に出力します。
-xM1
-xM と同様に依存関係を収集しますが、/usr/include ファイルは除きます。
-xMD
-xM と同様にメイクファイルの依存関係を生成しますが、コンパイルを含みます。
-xMF
メイクファイルの依存関係情報を保存するファイル名を指定します。
-xMMD
メイクファイルの依存関係を生成しますが、システムヘッダーを除外します。
-xP
このモジュールで定義されたすべての K&R C 関数に対するプロトタイプを出力します。
-xpg
gprof(1) によるプロファイルの準備として、データを収集するためのオブジェクトコードを生成します。
-xtrigraphs
3 文字表記シーケンスの認識状況を判定します。
-xustr
16 ビット文字から成る文字列リテラルの認識を有効にします。

A.1.7 コンパイル済みコードのオプション

表 A-7 コンパイル済みコードのオプション表

オプション
処理
-c
ld(1) によるリンクを行わず、現在の作業用ディレクトリ内にソースファイルごとに .o ファイルを作成します。
-o
出力ファイルに名前を付けます。
-S
アセンブリソースファイルを作成しますが、アセンブルは行いません。

A.1.8 コンパイルモードのオプション

表 A-8 コンパイルモードのオプション表

オプション
処理
-#
冗長モードを有効にします。コマンドオプションの展開内容と呼び出されたすべての構成要素が表示されます。
-###
呼び出された各構成要素が表示されますが、実行はされません。また、コマンドオプションの展開内容も表示されます。
-features
C 言語の各種機能を有効または無効にします。
-keeptmp
コンパイル中に作成される一時ファイルを自動的に削除しないで保持します。
-V
cc コンパイラの実行時に各構成要素の名前とバージョン番号を表示します。
-W
引数を C コンパイルシステムの構成要素に渡します。
-X
ANSI/ISO C に準拠する度合いを指定します。
-xc99
サポートされる C99 機能をコンパイラで認識させるかどうかを制御します。
-xchar
char の符号を保持します。
-xhelp
オンラインヘルプ情報を表示します。
-xjobs
コンパイラが生成するプロセスの数を設定します。
-xpch
ソースファイルが共通インクルードファイルセットを共有しているようなアプリケーションのコンパイル時間を短縮します。
-xpchstop
-xpch とともに使用して、活性文字列の最後のインクルードファイルを指定します。
-xtemp
cc が使用する一時ファイルの dir を設定します。
-xtime
コンパイルの各構成要素が占有した実行時間と資源を報告します。
-Y
コンパイルシステムの構成要素を配置する新しいディレクトリを指定します。
-YA
コンパイラの構成要素を検索するデフォルトのディレクトリを変更します。
-YI
インクルードファイル検索時のデフォルトディレクトリを変更します。
-YP
ライブラリファイルを検索するデフォルトのディレクトリを変更します。
-YS
起動用のオブジェクトファイルを検索するデフォルトのディレクトリを変更します。

A.1.9 診断のオプション

表 A-9 診断のオプション表

オプション
処理
-errfmt
警告メッセージからの型用に「error:」という接頭辞をメッセージに付けます。
-errhdr
ヘッダーファイルから指定したグループへの警告を制限します。
-erroff
コンパイラからの警告メッセージを出力しません。
-errshort
コンパイラが型の不一致を検出をする際に出力されるエラーメッセージの詳細度を制御します。
-errtags
各警告メッセージのメッセージタグを表示します。
-errwarn
指定された警告メッセージが表示される場合、cc はエラーステータスを返して終了します。
-v
より厳しい意味検査およびほかの lint に似た検査を行います。
-w
コンパイラからの警告メッセージを出力しません。
-xe
ソースファイル上で構文および意味検査のみを行います。オブジェクトコードや実行可能コードは生成しません。
-xtransition
K&R C と Solaris Studio ISO C との間の相違に対して警告を出します。
-xvpara
#pragma MP 指令が指定されているが、正しく並列化指定されていないループについて警告を出します。

A.1.10 デバッグオプション

表 A-10 デバッグのオプション表

オプション
処理
-xcheck
スタックオーバーフローに関する実行時検査を追加し、ローカル変数を初期化します。
-g
デバッガ用に追加のシンボルテーブル情報を作成します。
-s
出力されるオブジェクトファイルからシンボリックデバッグのための情報をすべて削除します。
-xdebugformat
stab 形式ではなく dwarf 形式でデバッグ情報を生成します。
-xpagesize
スタックとヒープ用の優先ページサイズを設定します。
-xpagesize_stack
スタック用の優先ページサイズを設定します。
-xpagesize_heap
ヒープ用の優先ページサイズを設定します。
-xs
dbx のためのオブジェクトファイルの自動読み取りを無効にします。
-xvis
(SPARC) コンパイラによる VIS 命令セットに定義されているアセンブリ言語のテンプレートの認識を有効にします。

A.1.11 リンクとライブラリのオプション

表 A-11 リンクとライブラリのオプション表

オプション
処理
-B
ライブラリのリンクを静的dynamic のどちらにするかを指定します。
-d
リンクエディタに動的なリンクまたは静的なリンクを指定します。
-G
動的にリンクされる実行可能プログラムではなく、共有オブジェクトを作成することをリンクエディタに指示します。
-h
共有動的ライブラリに name; を付けます。これによってバージョンの異なるライブラリを作成できます。
-i
LD_LIBRARY_PATH の設定を無視するオプションをリンカーへ渡します。
-L
リンカーがライブラリを検索するリストに dir を付け加えます。
-l
オブジェクトライブラリ libname.so、または libname.a をリンクの対象とします。
-mc
オブジェクトファイルの .comment セクションから重複している文字列を削除します。
-mr
.comment セクションからすべての文字列を削除し、オブジェクトファイルの string を挿入します。
-Q
出力ファイルに識別情報を入れるかどうかを設定します。
-R
コロンで区切られたディレクトリのリストを、ライブラリ検索ディレクトリとして、実行時リンカーに渡します。
-xMerge
データセグメントをテキストセグメントにマージします。
-xcode
コードアドレス空間を指定します。
-xldscope
変数定義と関数定義のデフォルトのスコープを制御して、より高速で安全な共有ライブラリを作成します。
-xnolib
デフォルトのライブラリをリンクしません。
-xnolibmil
数学ライブラリのルーチンをインライン化しません。
-xstrconst
このオプションは、将来のリリースでは推奨されません。代わりに、-features=[no%]conststrings を使用します。

デフォルトのデータセグメントではなくテキストセグメントの読み出し専用データセクションに、文字列リテラルを挿入します。

A.1.12 対象プラットフォームのオプション

表 A-12 対象プラットフォームのオプション表

オプション
処理
-m32|-m64
コンパイルされたバイナリオブジェクトのメモリーモデルを指定します。
-xarch
命令セットアーキテクチャーを指定します。
-xcache
オプティマイザ用のキャッシュ特性を定義します。
-xchip
オプティマイザ用の対象プロセッサを指定します。
-xregs
生成コード用のレジスタの使用法を指定します。
-xtarget
最適化と命令セットの対象となるシステムを指定します。

A.1.13 x86 固有のオプション

表 A-13 x86 固有のオプション表

オプション
処理
-flteval
浮動小数点の評価を制御します。
-fprecision
浮動小数点制御ワードの丸め精度モードのビットを初期化します。
-fstore
浮動小数点式または関数の値を、代入式の左辺値の型に変換します。
-nofstore
浮動小数点式または関数の値を、代入式の左辺値の型に変換しません。
-xmodel
64 ビットオブジェクトの形式を Solaris x86 プラットフォーム用に変更します。
-xpentium
Pentium プロセッサ用に最適化を行います。

A.1.14 ライセンスオプション

表 A-14 ライセンスのオプション表

オプション
処理
-xlicinfo
ライセンスシステムについての情報を返します。

A.1.15 廃止オプション

次の表に、非推奨になったオプションを示します。引き続きコンパイラはこれらのオプションを受け付けますが、将来は使用できなくなる可能性があります。できるだけ速やかに推奨代替オプションを使うようにしてください。

表 A-15 廃止のオプション表

オプション
処理
-dalign
代わりに -xmemalign=8s を使用してください。
-KPIC (SPARC)
代わりに -xcode=pic32 を使用してください。
-Kpic (SPARC)
代わりに -xcode=pic13 を使用してください。
-misalign
代わりに -xmemalign=1i を使用してください。
-misalign2
代わりに -xmemalign=2i を使用してください。
-x386
代わりに、-xchip=generic を使用してください。
-x486
代わりに、-xchip=generic を使用してください。
-xa
代わりに、-xprofile=tcov を使用してください。
-xarch=v7,v8,v8a
廃止。
-xcg
-xarch-xchip-xcache のデフォルト値を活かすために、代わりに -O を使用してください。
-xcrossfile
代わりに -xipo を使用します。
-xnativeconnect
廃止。これに代わるオプションはありません。
-xprefetch=yes
代わりに - xprefetch=auto,explicit を使用します。
-xprefetch=no
代わりに -xprefetch=no%auto,no%explicit を使用します。
-xsb
廃止。これに代わるオプションはありません。
-xsbfast
廃止。これに代わるオプションはありません。
-xtarget=386
代わりに -xtarget=generic を使用してください。
-xtarget=486
代わりに -xtarget=generic を使用してください。
-xvector=yes
代わりに、--xvector=lib を使用します。
-xvector=no
代わりに、-xvector=none を使用します。