acc(1)

名前
acc - C コンパイラ

形式
acc [ -A <名前> ] [ <トークン> ] [ -a ]
[ -B [static|dynamic] ] [ -C ] [ -c ] [ -cg89 ]
[ -cg92 ] [ -D<名前> [ <トークン> ] ] [ -dalign ]
[ -d [y|n] ] [ -dryrun ] [ -E ] [ -fast ] [ -fd ]
[ -flags ] [ -fnonstd ] [ -fns ] [ -fround=r ]
[ -fsimple ] [ -fsingle ] [ -ftrap=t ] [ -G ]
[ -g ] [ -H ] [ -help ] [ -h <名前> ] [ -I <ディレクトリ> ]
[ -inline= [<関数 1>,...,<関数 n > ] ] [ -KPIC ]
[ -Kpic ] [ -keeptmp ] [ -L <ディレクトリ> ]
[ -l <名前> ] [ -libmieee ] [ -libmil ] [ -M ]
[ -misalign ] [ -misalign2 ] [ -mt ] [ -native ] [ -nolib ] [ -nolibmil ] [ -noqueue ] [ -O[ 1|2|3|4|5] ]
[ -o <出力ファイル> ] [ -P ] [ -p ] [ -pg ] [ -PIC ]
[ -pic ] [ -Qdir <ディレクトリ> ] [ -Qoption c <引数> ]
[ -Qpath <ディレクトリ> ] [ -Qproduce<ソース種類> ]
[ -qdir <ディレクトリ> ] [ -qoption c <引数> ]
[ -qpath <ディレクトリ> ] [ -qproduce<ソース種類> ]
[ -R <ディレクトリ> [ :<ディレクトリ> ] ] [ -S ] [ -s ]
[ -sb ] [ -sbfast ] [ -strconst ] [ -temp= <ディレクトリ> ] [ -time ] [ -U <名前> ] [ -unroll =n ] [ -V ] [ -v ]
[ -vc ] [ -w ] [ -X [a |c |s |t ]] [ -xa ]
[ -xarch=a ] [ -xautopar ] [ -xcache=c ] [ -xCC ]
[ -xcg89 ] [ -xcg92 ] [ -xchip=c ] [ -xdepend ]
[ -xe ] [ -xexplicitpar ] [ -xF ] [ -xhelp=f ] [ -xildoff ]
[ -xildon ] [ -xinline=[<関数 1>,...,<関数 n>] ]
[ -xlibmieee ] [ -xlibmil ] [ -xlicinfo ]
[ -xlic_lib_=l ] [ -xloopinfo ]
[ -xM ] [ -xM1 ] [ -xMerge ] [ -xnolib ] [ -xnolibmil ]
[ -xO[ 1|2|3|4|5] ] [ -xP ] [ -xparallel ] [ -xpg ]
[ -xprofile=p ] [ -xreduction ] [ -xregs=r ]
[ -xrestrict=f ] [ -xs ] [ -xsafe=mem ] [ -xsb ]
[ -xsbfast ] [ -xsfpconst ] [ -xspace ]
[ -xstrconst ] [ -xtarget=t ] [ -xtemp= <ディレクトリ> ]
[ -xtime ] [ -xtransition ] [ -xunroll=n ] [ -xvpara ]
[ -Y, <ディレクトリ> ] [ -Zll ] [ -Zlp ] [ -Ztha ]

機能説明
acc (SPARC のみ) は Solaris 上で直接使用するためのものではありません。 Solaris 上で acc を使用可能にしているのは、 /usr/ucb/cc を使用可能にするためです。これを使用するにはパッケージ SUNWscpu が 必要になります。 /usr/ucb/cc のオプションは、 acc のオプションと同じです。このマニュアルページにて詳しく説明します。

acc は C コンパイラです。C プログラミング言語で 書かれたプログラムを実行可能なロードモジュール 、または後で ld(1) リンクエディタでロードできる再配置可能な バイナリプログラムに変換します。

acc は多彩なオプションに加え、いくつかの種類の ファイル名引数を受け付けます。たとえば、名前が .c で終わるファイルは、C のソースプログラムとして 処理されます。 これらのファイルはコンパイルされ、その結果生成 されるオブジェクトプログラムが現作業ディレクトリに 格納されます。このオブジェクトファイル の名前には、ソースプログラムの接尾辞 .c の代わりに .o が付けられます。 同様に、 .s で終わる名前のファイルはアセンブリソースプログラム として処理されます。 これらのファイルはアセンブルされた後、接尾辞 .o が付いたファイルが生成されます。 この他、 .il で終わるファイル名を持つファイルは、インラインコード展開用 のテンプレートファイルとして扱われます。これらの ファイルは、コード最適化オプションが指定されている場合に、 選択されたルーチンの呼び出しをインライン展開するときに 使用します。 コンパイラに関連するファイル名の接尾辞については、 後述の「ファイル」の項を参照してください。

その他の引数は、アセンブラやローダーのオプション、 オブジェクトプログラム、オブジェクトライブラリ などを指定するためのものです。 -c、 -S、 -E 、 -P 、 または -Qproduce が指定されないかぎり、これらのプログラムやライブラリは、 指定されたコンパイルあるいはアセンブリの結果生成される コードとともに (指定の順序で) リンクされ、出力ファイル a.out を生成します。 -o オプションを使用すれば、実行可能ファイルの名前 に指定することができます。

1 つのファイルのコンパイルとリンクを一度に行う場合、 中間ファイルは削除されます。

ライブラリを検索するデフォルトのディレクトリを変更する方法については、 -Y, <ディレクトリ> を参照してください。<ディレクトリ> には、パスをコロンで区切って指定してください。 cc のデフォルトのライブラリ検索パスは、次のとおりです。
        /opt/SUNWspro/SC5.0/lib
        /usr/ccs/lib
        /usr/lib

オプション

プラットフォームに固有のオプションは、エラーなどの表示 なしで受け入れられます。例外がある場合は、各オプションの 説明で明記しています。

-g または -pg オプションを使用してそれぞれデバッグ中またはプロファイリング 中のオブジェクトをコンパイルする場合、それらをリンクするための ld コマンドにも、適切なオプションを含める必要があります。

リンク時オプションについては、 ld(1) を参照してください。

-a  各基本ブロックの実行回数をカウントするためのコードを挿入します。 これは、 tcov についての旧形式の基本ブロックプロファイリングです。 新形式のプロファイリング情報については -xprofile=tcov を、また詳細については tcov(1) マニュアルページを参照してください。 すべての .c ファイルについて .d ファイルを作成する実行時記録メカニズムを呼び出し ます (正常終了時)。この .d ファイルには、対応するソースファイルに関する実行データ が記録されます。この後、 tcov(1) ユーティリティをこのソースファイルに対して実行し、 プログラムに関する統計データを生成することができます。 このオプションは、 -g とは互換性がありません。

-A<名前>[(<トークン>)]
    #assert 前処理指令で指定する場合と 同様、<名前> を述語として、指定された <トークン> と 関連付けます。
    事前表明:	system(unix)
    		cpu(sparc)
    		machine(sparc)

    上記は -Xc モードでは事前定義されません。

    -A の後にハイフン (-) しかない場合、事前定義されているすべてのマクロ ( __ で始まるマクロを除く) および事前定義されている 表明がすべて放棄されます。

-B[static|dynamic]
    -Bdynamic を指定すると、 -lx オプション が同時に指定されている場合、リンクエディタ は libx.so という名前のファイルを検索した後、 libx.a という名前のファイルを検索します。 -Bstatic を指定した場合、リンクエディタは libx.a という名前のファイルのみを検索します。 このオプションは切り替えオプションとして、コマンド行で 何回でも指定することができます。なお、 このオプションと引数は ld に引き渡されます。

-C  プリプロセッサ (前処理部) は前処理指令の行にあるコメント以外のすべてのコメントを 削除しません。

-c  ld(1) とのリンクを行わず、各ソースファイルごとに .o ファイルを生成します。 -o オプションを使用して、1 つのオブジェクトファイルに 明示的に名前を付けることができます。

-cg89
    このオプションは、 -xarch=v7 -xchip=old -xcache=64/32/1 のマクロです。

-cg92
    このオプションは、 -xarch=v8 -xchip=super
    -xcache=16/32/4:1024/32/1" のマクロです。

-D<名前>[=<トークン>]
    #define 前処理指令を実行するのと同様に、 <名前> と指定された <トークン> を関連付けます。 =<トークン> が指定されない場合、トークン 1 が指定されたものと見なします。
    事前定義:       sparc
                    sun
                    unix

    上記は、 -Xc モードでは事前定義されません。
    次に挙げる事前定義は、すべてのモードで有効です。
    __sparc
    __unix
    __sun
    __BUILTIN_VA_ARG_INCR
    __SUNPRO_C=0x420
    __SVR4
    __`uname -s` `uname -r`

-dalign
    パフォーマンスに改善の余地があれば、ダブルワードの load/store 命令を生成 します。double および long long 型のデータはすべてダブルワードの境界整列 がされているものとみなされます。 正しい境界整列が保証されないときは、このオプション を使用しないようにしてください。

-d [y|n]
    -dy は、リンクエディタに動的リンクを行うよう 指定します (デフォルトの設定)。 -dn は、リンクエディタに静的リンクを行う よう指定します。このオプションとその引数は ld に渡されます。

-dryrun
    コンパイラドライバで生成されたコマンドを表示します (実行はしません)。

-E  指定された C ファイルの前処理のみ行い、その結果を 標準出力に送ります。この出力には、コンパイルの次の 段階で使用するための前処理指令が含まれています。

-fast
    速度を重視したコンパイルオプションの最適な 組み合わせを選択します。ほとんどの現実的なアプリケーション で最高に近いパフォーマンス が得られるはずです。 -fast オプションを使用してコンパイルしたモジュールについては、 リンク時にも -fast オプションを指定しなければなりません。

    このオプションを使用すれば、コンパイル時に使用する ハードウェア上で利用可能な最速のコード生成オプション、 最適化レベル -O2、 一連のインライン展開テンプレート、 -fns オプション、 -ftrap=%none オプション、および -dalign オプションが自動的に選択されます。

    他のオプションと一緒に -fast オプションを使用した場合には、最後の指定が使用されます。 コード生成オプション、最適化レベル、インラインテンプレート ファイルの使用は、このオプションの後ろにスイッチを指定する ことにより変更できます。たとえば、 -fast の最適化レベルが最初は -O4 であっても、次に -fast -O1 と指定すると、最適化オプションは -O1 になります。

    IEEE 標準の例外処理に依存しているプログラムには このオプションを使用しないでください。使用した場合には、 異なる数値結果が得られたり、プログラムが処理の途中で終了したり、 予想しない SIGFPE シグナルを受け取ることがあります。

-fd 旧式の関数宣言と定義を報告します。

-flags
    利用可能なオプションについて 1 行にまとめて表示します。

-fnonstd
    このオプションは、 -fns および -ftrap=common のマクロです。

-fns
    SPARC 非標準の浮動小数点モードを起動します。 デフォルトは、SPARC 標準浮動小数点モードです。 あるルーチンを -fns でコンパイルした場合は、すべてのプログラムルーチンを
    -fns でコンパイルする必要があります。途中から異なるオプションを使用すると、 予期しない結果が生じることがあります。

-fround=r
    プログラム初期化中、実行時に確立される IEEE 754 小数点丸めモードを設定します。

    r は、 nearest、 tozero、 negative、 positive、 のいずれかでなければなりません。 デフォルト値は、
    -fround=nearest です。

    その意味は、 ieee_flags サブルーチンの場合と同じです。 あるルーチンを -fround=r でコンパイルした場合は、すべてのプログラムルーチンを -fround=r オプションでコンパイルする必要があります。途中から異なるオプションを使用すると、予期しない結果が生じることがあります。

-fsimple
    オプティマイザが浮動小数点演算に関する前提事項を単純化できるようにします。n を指定する場合は、0、1、2 のいずれかでなければなりません。

    デフォルトは次のとおりです。
    • -fsimple[=n] を指定しない場合、コンパイラは
    -fsimple=0 を使用します。
    • -fsimple
     のみを指定して =n を指定しない場合、コンパイラは
    -fsimple=1
     を使用します。

    -fsimple=0
    前提事項の単純化を行えないようにします。厳密に IEEE 754 に準拠します。

    -fsimple=1
    適度の単純化を行えるようにします。結果として作成されるコードは、IEEE 754 に厳密には準拠していませんが、ほとんどのプログラムの数値結果は変更されていません。

    -fsimple=1 の場合、オプティマイザは以下の事項を前提とします。
    • IEEE 754 のデフォルトの丸めモードおよびトラップモードは、プロセスの初期化後も変化しない。
    • 潜在的な浮動小数点例外以外の目に見える結果を作成しない演算は、削除できる。
    • 無限大または非数をオペランドとして持つ計算は、非数をその結果に伝える必要はない。たとえば、x*0 は 0 で置き換えることができる。
    • 演算はゼロの符号には依存しない。

    -fsimple=1 を指定した場合は、オプティマイザは必ず四捨五入または例外に応じた最適化を行います。特に浮動小数点演算は、実行時に丸めモードを一定に保持して異なる結果を作成する演算で置き換えることはできません。-fast は
    -fsimple=1 が暗黙的に設定されます。

    -fsimple=2
    多くのプログラムで丸め方法を変更して異なる数値を結果として作成するような、積極的な浮動小数点演算の最適化を可能とします。たとえば、オプティマイザは与えられたループ内のすべての x/y の演算を x*z で置き換えることができます。ただし、x/y はそのループで少なくとも 1 回は必ず評価され、z=1/y であり、y および z の値はループの実行中は一定の値をとるものとされます。

    -fsimple=2 の場合でも、オプティマイザは何も作成しないプログラムに浮動小数点例外を導入することは許されていません。

-fsingle
    ( -Xt および -Xs モードのみ) このオプションを使用すると、コンパイラは 型の式を倍精度ではなく単精度で評価します (コンパイラを -Xa または -Xc モードで使用する場合、float 型の式は 単精度で評価されるため、このオプションは意味を持ちません)。

-ftrap=t
    起動時に IEEE 754 トラップモードを有効にします。

    t には、 %all、 %none、 common、 [no%]invalid、 [no%]overflow、 [no%]underflow、 [no%]division、 [no%]inexact の 1 つ以上をコンマで区切って指定します。

    デフォルト値は -ftrap=%none です。

    このオプションは、プログラムの初期化時に確立される IEEE 754 トラップモードを設定します。処理は左から右に行われます。common は定義により、無効、0 除算、オーバーフローの例外を指します。

    例: -ftrap=%all,no%inexact は、 inexact を除くすべてのトラップを設定します。

    意味は、以下に示すことを除き ieee_flags サブルーチンの場合と同じです。
    o %all はすべてのトラップモードを起動します。
    o %none はデフォルト設定されており、すべてのトラップモードを終了します。
    o no% を接頭辞としてつけると、そのトラップモードだけを終了します。

    1 つのルーチンを -ftrap=t でコンパイルした場合は、そのプログラムのすべてのルーチンを -ftrap=t オプションでコンパイルする必要があります。途中から異なるオプションを使用すると、予期しない結果を生じることがあります。

-G  動的にリンクされる実行可能プログラムではなく 共有オブジェクトを生成するようリンクエディタに指令します。 このオプションは ld に渡されます。なお、このオプションは
    -dn オプションと一緒には使用できません。

-g  dbx(1) 用の追加シンボルテーブル情報を生成します。

    -g オプションを指定すると、 -xildon がデフォルト設定のインクリメンタルリンカーのオプションとなります。 -xildon を参照してください。 -G オプションが指定されている、
    -xildoff オプションが指定されている、 何らかのソースファイル名がコマンド行に指定されている、 という 3 つの条件がいずれも当てはまらない場合は、 ld の代わりに ild が呼び出されます。

    このオプションを -O オプションと共に指定した場合、特定の範囲だけをデバッグすることができます。-xO4 と -g を組み合わせて指定すると、通常は -xO4 で行われるインライン化が取り消されます。

-H  現在のコンパイル中に取り込まれた各ファイルのパス名を 1 行 に 1 つずつ標準エラー出力に書き出します。

-h<名前>
    共有動的ライブラリを指定します。 このオプションは、共有動的ライブラリに <名前> を割り当てます。これによって、複数の共有動的ライブラリ を作成できます。 通常、 -h に続けて指定する名前は、 -o の後に指定した名前と同一にします。 -h と <名前> の間にはスペースを入れても入れなくてもかまいません。 このオプションは ld に渡されます。

-help
    コンパイラオプションの要約を 1 行ずつ表示します。

-I<ディレクトリ>
    相対ファイル名 (先頭が / でないファイル名) で指定された #include ファイルの検索ディレクトリリストにパス名 <ディレクトリ> を追加します。 プリプロセッサはまず、ソースファイルが含まれている ディレクトリ、次に -I オプションで指定されたディレクトリ (もしあれば)、最後に /usr/include ディレクトリの順に #include ファイルを検索します。

-inline=[<関数 1>,...,<関数 n>]
    ユーザーが作成したルーチンの場合、<関数 1> から <関数 n> の並びに指定した名前 (複数指定可) だけをインライン化するように試みます。 コンパイル中のファイルに含まれているルーチンだけが操作の対象になります。 <関数 1> から <関数 n> には、関数およびサブルーチンを コンマで区切って指定してください。

    -O3 オプションとともに使用すると、 いくつかのルーチンをインライン化することで 更に最適化が行われます。 -O3 だけを指定しても、インライン化は行われません。

    -O4 オプションとともに使用すると、 インライン化の対象が指定したルーチンに制限されるため、 -O4 だけを指定した場合ほど最適化されない可能性があります。通常、 -O4 を指定すると、コンパイラはユーザーが作成したすべての サブルーチンと関数のインライン化を試みます。 -inline= の右辺に何も指定しないと、ソースファイルのどのルーチンも インライン化されません。

    以下のいずれかの場合、 ルーチンはインライン化されません (このとき、警告はありません)。
    o 最適化のレベルが -O3 より低いとき
    o 該当するルーチンが見つからないとき
    o iropt によって、該当するルーチンのインライン化による効果または安全性が 認められないとき
    o 該当するルーチンのソースがコンパイル中のファイルにないとき

-KPIC
    位置に依存しないコードを生成します。大域的なデータへの参照は、 大域的なオフセットテーブル内のポインタの間接参照として 生成されます。 各関数呼び出しは、手続きのリンケージテーブルによって PC 相対アドレス指定モードで生成されます。

    -Kpic の大域的なデータオブジェクトの数があまりにも多いときには、 -KPIC により、大域的なオフセットテーブルを 32 ビットアドレスの範囲に拡張します。

-Kpic
    -KPIC と同じですが、大域的なオフセットテーブルのサイズは 8K に制限されます。

-keeptmp
    コンパイル時に生成されたファイルを、自動的に 削除せず保持します。

-L<ディレクトリ>
    オブジェクトライブラリルーチン ( ld(1) でリンクを行うためのルーチン) を収めているディレクトリ リストに <ディレクトリ> を追加します。

-l<名前>
    オブジェクトライブラリ <名前> をリンクします ( ld(1) で使用)。このオプションは <ソースファイル> 引数の後に指定しなければなりません。

-libmieee
    数学ルーチンについて例外発生時に IEEE 754 型の戻り値 を返すようにします。このような場合、 例外メッセージは出力されず、 errno の価は信頼できません。

-libmil
    より高速に実行するためいくつかのライブラリルーチンを インライン化します。

-M  指定された C プログラムについて前処理 (cpp) のみを行い、メークファイルの依存関係を生成して、その結果を 標準出力に書き出すよう要求します (メークファイルと依存関係 の詳細については、 make(1) を参照してください)。

-misalign
    -misalign は、データが適正に整列していることは想定して いないため、データについては非常に限定的なロードとストア (一度に 1 バイトずつ) を行う必要があります。このオプションを指定すると、プログラムの実行時のパフォーマンスが極端に低下します。

-misalign2
    -misalign2 は -misalign と同様に、データが適正に整列していないことを想定しますが、データが少なくともハーフワード配列であるとして扱います。データについては限定的なロードおよびストアを行う必要がありますが、プログラム実行時のパフォーマンス低下は -misalign の場合ほど極端ではありません。

-mt D_REENTRANT をプリプロセッサに渡し、 -l thread を付加します。 マルチスレッドのプログラムに対しては、コンパイルおよびリンク時点で -mt オプションを使用しなければなりません。 実行を高速化する場合、このオプションは 複数プロセッサシステムを必要とします。単一プロセッサ システムでは、このオプションを指定した結果として作成される実行可能プログラムは、実行速度が遅くなります。

-native
    コンパイラを実行するマシンで使用可能なコード生成オプションを確認し、コンパイラに対してそのマシンを対象にしたコードを生成するよう指示します。

    このオプションは、 -xtarget=native と同義です。

    -fast マクロの展開には、 -native が含まれています。

-nolib
    デフォルトのライブラリをいっさいリンクしません。すなわち、 -l オプションは ld には渡されません。通常、 acc ドライバは -lm -lansi -lc を ld に渡します。

    -nolib を使用した場合には、 すべての -l オプションをプログラマ自身の手で渡さなければ なりません。たとえば、次のように指定した場合、 libm は静的に、その他のライブラリは動的にリンクされます。
    acc test.c -nolib -lansi -Bstatic -lm -Bdynamic
    -lc

-nolibmil
    -fast をリセットし、インラインテンプレート を取り込みません。このオプションは、 -fast オプションの後に指定します。たとえば、 cc –fast –nolibmil ... のように指定します。

-noqueue
    ライセンスを取得できないと、このコンパイル要求を待ち行列に 入れません。

-O[1|2|3|4|5]
    オブジェクトコードを最適化します。 これは、 -g と共に使用可能ですが、-xa とともに使用できません。 -O を指定することは、 -O2 を指定することと等価です。 数字の意味は、以下のとおりです。

        1   基本的な局所的最適化 (ピープホール) を行います。

        2   基本的な局所的および大域的最適化を行います。 帰納変数の削除、局所的および大域的な 共通部分式の削除、計算の簡略化、 コピーの伝達、定数の伝達、ループ不変式の最適化、 レジスタ割り当て、基本ブロックのマージ、末尾再帰の削除、 デッドコードの削除、末尾呼び出しの削除、複雑な式の展開 などを行います。

            -O2 レベルでは、大域、外部、間接の参照や定義はレジスタに割り当てられません。 これらの参照や定義は、あたかも volatile 型として宣言されたかのように 取り扱われます。一般的に、コードサイズは最も小さくなります。

        3   -O2 の最適化に加えて、外部変数の参照と定義も最適化します。 ループの展開やソフトウェアのパイプラインなども実行されます。 ポインタ代入の影響を追跡しません。 デバイスドライバのコンパイル時、あるいはシグナルハンドラ 内から外部変数を変更するプログラムのコンパイル時には、 volatile 型の修飾子を使用して オブジェクトが最適化されないようにする必要があります。 一般に、このレベルの最適化では、コードのサイズが大きくなります。

        4   -O3 の最適化に加えて、同じファイル内の関数を自動的にインライン化 します。通常は、これによって実行速度が改善されます。 このレベルでは、ポインタ代入 の結果が追跡され、通常はコードサイズが増大します。

        5   最高レベルの最適化を行います。より長いコンパイル時間を必要とする コンパイルアルゴリズム、または実行時間の改善と同じ確実性を 持たないコンパイルアルゴリズムを使用します。このレベルの 最適化をプロファイルのフィードバックと共に使用すると、更に パフォーマンスを向上させます。

        オプティマイザは、その実行中にメモリが足りなくなると、 最適化レベルを下げて現在の手続きを再試行することによって 回復し、コマンド行オプションで指定された元のレベルで それ以降の手続きを再開します。

        (同一の手続きが数千行のコードで構成されるような) 非常に 大きな手続きを -O3 あるいは -O4 レベルで最適化する場合、オプティマイザは大容量の仮想 メモリを必要とします。その場合には、コンピュータの パフォーマンスが低下することがあります。

-o  <出力ファイル> 出力ファイルを指定します。 <出力ファイル> には、コンパイルで生成するファイルの種類を示す適切な 接尾辞を付ける必要があります (後述の「ファイル」の項を参照してください)。 <出力ファイル> と <ソースファイル> を同じ名前にすることはできません (コンパイラはソース ファイルに上書きしません)。

-P  前処理だけ行います。 出力は接尾辞 .i を持つファイルに書き出されます。この出力には、 -E オプションと異なり、前処理指令は含まれません。

-p  prof(1) でプロファイルを生成するためのデータを収集する オブジェクトコードを作成します。 正常終了時に ファイル mon.out を生成する実行時記録メカニズムを呼び出します。

-pg gprof(1) でプロファイルを生成するためのデータを収集する オブジェクトコードを作成します。 正常終了時に gmon.out ファイルを生成する実行時記録メカニズムを呼び出します。

-PIC
    -KPIC と同様です。

-pic
    -Kpic と同様です。

-Qdir <ディレクトリ>
    <ディレクトリ> でコンパイラの構成要素を検索します。

-Qoption c <引数>
    オプション <引数> を構成要素 c に渡します。 このオプションは該当の構成要素に適切なものとし、ハイフン で始まるものがあります。 c には、次のいずれかを使用できます。 acomp、 fbe、 cg、 iropt、 ld

-Qpath <ディレクトリ>
    <ディレクトリ> をコンパイル検索パスに挿入します。 <ディレクトリ> は acomp(1) や ld(1) などのコンパイルプログラムの代替バージョンの検索に使用されます。 このパスは、たとえば *crt*.o や bb_link.o など、コンパイラドライバが暗黙に参照される特定の再配置可能 オブジェクトファイルが最初に検索されます。

-Qproduce<ソース種類>
    <ソース種類> で指定した 種類のソースコードを生成します。 <ソース種類> には次のものがあります。
        .i  前処理された C ソース
        .o  オブジェクトファイル
        .s  アセンブラソース

-qdir <ディレクトリ>
    -Qdir <ディレクトリ> と同様です。

-qoption c <引数>
    -Qoption c <引数> と同様です。

-qpath <ディレクトリ>
    -Qpath <ディレクトリ> と同様です。

-qproduce<ソース種類>
    -Qproduce<ソース種類> と同様です。

-R<ディレクトリ>[:<ディレクトリ>]
    実行時リンカーにライブラリ検索ディレクトリ を指定します。各ディレクトリはコロンで区切って並べます。 このリストが存在し、しかも空でない場合、出力される オブジェクトファイルに記録され、実行時リンカーに 渡されます。 LD_RUN_PATH と -R オプションを両方とも指定した場合には、 -R オプションの方が優先されます。

-S  プログラムをアセンブルせず、アセンブリソースファイルを 生成します。

-s  すべてのシンボリックデバッグ情報を出力オブジェクトファイル から取り除きます。 ld(1) に渡されます。

-sb ソースブラウザ用のシンボルテーブル 情報を生成します。

-sbfast
    ソースブラウザ用のデータベースを作成しますが、 実際のコンパイルは行いません。

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

-temp= <ディレクトリ>
    一時ファイルのディレクトリを <ディレクトリ> に設定します。

-time
    各種のコンパイルパスの実行時間を報告します。

-U <名前>
    <名前> の定義を解除します。これは、前処理指令である #undef を使用した場合と同じことです。 -D と -U について同じ <名前> を指定した場合には、これらのオプションの指定順序に関係なく <名前> は定義されません。

-unroll=n
    コンパイラにループを最適化 (展開) させるかどうかを指定します。 n は正の整数です。 n が 1 の場合、それはコマンドであり、コンパイラはループの 最適化を行いません。 n が 1 より大きい場合は、コンパイラに対して n 回展開するよう指示します。

-V  コンパイラ実行時に各処理過程の名前とバージョン ID を表示します。

-v  詳細情報モード。コンパイラのバージョン番号と、コンパイラが実行する 各プログラムの名前を表示します。

-vc より厳しい意味検査を行い、 lint による検査と類似した検査も可能にします。

-w  警告を表示しないようにします。

-X[a|c|s|t]
    ANSI C 標準への準拠の程度を指定します。 準拠の程度は次のように指定します。

    a (ANSI)
        ANSI C と Sun C の拡張互換性が含まれます。 ANSI C に従って意味処理が行われます。 Sun C と ANSI C の意味処理が異なる場合、コンパイラは その矛盾を指摘する警告を出し、ANSI C に準拠した解釈を 行います。これは、デフォルトデフォルトのモードです。

    c (conformance - 準拠)
        Sun C の拡張互換性を含まず、ANSI C に最大限に準拠します。 コンパイラは、ANSI C 以外の構造を持っているプログラム に対してエラーメッセージや警告メッセージを表示します。

    s (Sun C)
        コンパイル後の言語には、ANSI 以前の Sun C との互換性を持つすべて の機能が含まれます。コンパイラは Sun ANSI C と旧 Sun C での動作 が異なるすべての言語構造について警告を出します。 このオプションでは前処理用に cpp が 呼び出され、 __STDC__ は定義されません。

    t (transition - 移行)
        ANSI C と Sun C の拡張互換性が含まれます。 ANSI C に従った意味処理の変更は行いません。 Sun C と ANSI C の意味が異なる場合、 コンパイラはその矛盾を指摘する警告を出し、 Sun C の解釈を行います。

    事前定義済みのマクロ __STDC__ は -Xt と -Xa については値 0 を、 -Xc については値 1 を持っています ( -Xs に関する定義はありません)。 異なる動作に関する警告メッセージはすべて、適切な コーディングによって排除することができます。 たとえば、キャストを使用することによって、整数拡張の変更に 関する警告を回避できます。

-xa と同様です。

-xarch=a
    コンパイラが使用する命令セットを制限します。

    a は、 generic、 v7、 v8a、 v8、 v8plus、 v8plusa のいずれか 1 つでなければなりません。

    このオプションは単独でも使用可能ですが、本来は -xtarget オプションの展開の一部です。これはおもに、 -xtarget オプションで指定された値を上書きする際に使用します。

    このオプションは、生成される命令を指定されたアーキテクチャ の命令に限定し、指定された命令セットだけが生成されるようにします。 このオプションで生成された特定のセットが使用されるとは限りませんが、 最適化を行う際には、通常そのセットが使用されます。

    このオプションを最適化と併せて使用する場合、適切なアーキテクチャを 選択をすると、指定されたアーキテクチャ上での実行パフォーマンスを 向上させることができます。ただし、不適切な選択を行うと、パフォーマンスが 極端に低下することがあります。

    v7、 v8、 および v8a のバイナリは、すべて互換性があります。 v8plus および v8plusa は互いにバイナリ互換性がありますが、上位互換性のみで、 下位互換性はありません。いずれの選択を行なっても、 古いアーキテクチャでは、実行速度が遅くなる可能性があります。 詳細については、『C ユーザーズガイド』を参照してください。

    -xarch の値は次のとおりです。

    generic
        ほとんどの SPARC で良好なパフォーマンスが得られます。 どんな場合もパフォーマンスが大きく低下することはありません。 これはデフォルト設定されています。

    v7  命令セットを V7 アーキテクチャに限定します。

    v8a 命令セットを V8 アーキテクチャの V8a バージョンに限定します。

    v8  命令セットを V8 アーキテクチャに限定します。

    v8plus
        命令セットを V9 アーキテクチャの V8plus バージョンに限定します。

    v8plusa
        命令セットを V9 アーキテクチャの V8plusa バージョンに限定します。

-xautopar
    複数プロセッサの自動並列化を有効にします。依存関係の解析 (ループの繰り返し内部でのデータ依存依存性の解析) およびループの再構成を行います。最適化が -xO3 より 低い場合は、-xO3 に上げ、警告を発します。

-xcache=c
    オプティマイザ用のキャッシュ特性を定義します。

    c は次のいずれか 1 つでなければなりません。

    o   generic

    o   s1/l1/a1

    o   s1/l1/a1:s2/l2/a2

    o   s1/l1/a1:s2/l2/a2:s3/l3/a3

    si/li/ai は次のように定義されます。

    si  レベル i のデータキャッシュのキロバイト単位のサイズ

    li  レベル i のデータキャッシュのバイト単位のサイズ

    ai  レベル i のデータキャッシュの関連性

    このオプションは単独でも使用可能ですが、 -xtarget オプションの展開に含まれています。これは、 -xtarget オプションで指定された値を変更するのが主な目的です。

    このオプションは、オプティマイザが使用可能なキャッシュ 特性を指定します。特定のキャッシュ特性が 必ず使用されるわけではありません。

    -xcache の値は次のとおりです。

    generic
        ほとんどの SPARC で良好なパフォーマンスを提供するキャッシュ プロパティを定義します。これは、デフォルト設定されています。

    s1/l1/a1
        レベル 1 のキャッシュ特性を定義します。

    s1/l1/a1:s2/l2/a2
        レベル 1 および 2 のキャッシュ特性を定義します。

    s1/l1/a1:s2/l2/a2:s3/l3/a3
        レベル 1、2、および 3 のキャッシュ特性を定義します。

-xCC
    C++ 書式のコメントを受け入れます。

-xcg89
    -cg89 と同様です。

-xcg92
    -cg92 と同様です。

-xchip=c
    オプティマイザ用のプロセッサを指定します。

    c は、 generic、 old、 super、 super2、 micro、 micro2、 hyper、 hyper2、 powerup、 ultra のいずれか 1 つでなければなりません。

    このオプションは単独でも使用可能ですが、 -xtarget オプションの展開に含まれています。これはおもに、 -xtarget オプションで指定された値を無効にするために使用します。

    このオプションは、処理対象となるプロセッサを指定する ことによって、タイミング特性を指定します。

    これは次に影響を与えます。

    •   命令の順序 (スケジューリング)

    •   コンパイラが分岐を使用する方法

    •   意味論的に等しい命令が複数ある場合に、実際に使用する命令

    -xchip 値は次のとおりです。

    generic
        ほとんどの SPARC で良好なパフォーマンスを得るための タイミング特性を使用します。

    old SuperSPARC より旧式のプロセッサのタイミング特性を使用します。

    super
        SuperSPARC チップのタイミング特性を使用します。

    super2
        SuperSPARC II チップのタイミング特性を使用します。

    micro
        microSPARC チップのタイミング特性を使用します。

    micro2
        microSPARC II チップのタイミング特性を使用します。

    hyper
        hyperSPARC チップのタイミング特性を使用します。

    hyper2
        hyperSPARC II チップのタイミング特性を使用します。

    powerup
        Weitek PowerUp チップのタイミング特性を使用します。

    ultra
        UltraSPARC チップのタイミング特性を使用します。

-xdepend
    ループを解析して繰り返し間のデータ依存関係を調べます。 依存関係の解析は -xautopar に含まれています。 依存関係の解析はコンパイル時に行われます。 -xdepend オプションは、 -xO3 または -xO4 が明示的にオンとなっている場合を除き無視され、 または他のオプションにより無視されます。

-xe ソースファイルのエラーチェックだけを行い、 オブジェクトファイルや実行可能ファイルを生成しません。

-xexplicitpar
    指定されたループを並行化します。依存関係の解析、つまり繰り 返しの間のループおよびデータ依存関係の解析は、ユーザーの責任です。 ソフトウェアが指定されたループを 並行化します。最適化が -xO3 より低い場合は、 -xO3 まで上げられます。

    スレッド管理をご自身で行う場合は、 -xexplicitpar は指定しないでください。

    -xexplicitpar オプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを 必要とします。より高速なコードを得るためには、 複数プロセッサシステムでこのオプションを使用します。 単独プロセッサシステムの場合、生成されたコードは通常は 低速で実行されます。並行化するループを識別し、そのループに 依存関係がある場合、不正な結果が得られ、多くの場合実行する たびに結果が異なり、警告は発せられません。縮約 ループには、明示的な並行プラグマは適用しないでください。 明示的な並行化が行われますが、ループの縮約については 行われず、結果が不正となることがあります。

    -xexplicitpar を使用して コンパイルとリンクを同時に実行する場合は、自動的に マイクロタスキング・ライブラリおよびスレッドに対して安全な C 実行時ライブラリを含まれます。 -xexplicitpar を使用して、個別にコンパイルとリンクを行う場合は、リンク時にも -xexplicitpar を指定する必要があります。

-xF アナライザとデバッガを使用して実行可能ファイル のパフォーマンス解析を可能にします ( analyzer(1) と debugger(1) のマニュアルページを参照してください)。 関数レベルで順序付けし直すことができるコードを生成します。 ファイル内の各関数が、それぞれ別のセクションに設定されます。 たとえば、 foo() や bar() などの関数はそれぞれセクション .text%foo および .text%bar に設定されます。実行可能ファイル内での関数の順序付けは、 -xF と、 ld の -M オプションを使用することにより制御できます ( ld(1) を参照してください)。

-xhelp=f
    オンラインヘルプ情報を表示します。

    -xhelp=flags はコンパイラオプションの要約を表示し、
    -xhelp=readme は README ファイルを表示し、
    -xhelp=errors はエラーおよび警告メッセージファイルを表示します。

-xildoff
    インクリメンタルリンカーを無効にし、 ld を強制的に使用します。 このオプションは、 -g オプションを使用しない、 -G オプションを使用する、またはコマンド行に何らかの ソースファイルがある、という 3 つの条件のうち 1 つ でも当てはまる場合に、デフォルトになります。

-xildon
    インクリメンタルリンカーを起動し、 ild をインクリメンタルモードで強制的に使用します。このオプションは、 -g オプションを使用する、 -G オプションを使用しない、コマンド行にソースファイル がないという 3 つの条件がすべて当てはまる場合に、デフォルトになります。

-xinline=[<関数 1>,...,<関数 n>]
    -inline と同様です。

-xlibmieee
    -libmieee と同様です。

-xlibmil
    -libmil と同様です。

-xlic_lib_=l
    l に指定した、サンの提供するライブラリとリンクします。 l には、ライブラリをコンマで区切って指定してください。

-xlicinfo
    ライセンスシステムに関する情報を返します。具体的には、 ライセンスサーバーの名前、ライセンスが検査され たユーザーのユーザー ID を返します。このオプションを 使用すると、コンパイラは起動されず、ライセンスも 検査されません。

-xloopinfo
    並行化されているループと並行化されていないループを 表示します。このオプションは通常、 -xautopar および -xexplicitpar オプションと共に使用します。このオプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを必要とします。

-xM メークファイル用の依存性を生成します。

-xM1
    -xM と同様です。

-xMerge
    このオプションの指定があると、 acc は、アセンブラのためにデータセグメントとテキストセグメントを マージします。このコンパイルで生成されたオブジェクトファイル の初期化されたデータは読み取り専用で、( ld -N コマンドでリンクされないかぎり) プロセス間で共有されます。

-xnolib
    -nolib と同様です。

-xnolibmil
    -nolibmil と同様です。

-xO[1|2|3|4|5]
    -O[1|2|3|4|5] と同様です。

-xP K&R C 関数定義のプロトタイプを出力します。

-xparallel
    自動および明示ループの両方を並行化します。このオプションは、 -xautopar、 -xdepend、 および -xexplicitpar を呼び出します。これは不正な結果を作成する危険性があります。

    スレッド管理をご自身で行う場合は、 -xparallel を使用しないでください。

    このオプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを 必要とします。より高速なコードを作成するためには、 このオプションを複数プロセッサ SPARC システムで 使用してください。単一プロセッサシステムでは、 生成されたコードは通常低速で実行されます。

    -xautopar オプション (それに -xparallel オプション) には、依存関係の解析が含まれています。そのため、
    -xautopar を -xdepend と共に使用してもしなくても、大きな相違はありません。

    一度にコンパイルとリンクを行う場合、 -xparallel はマイクロタスキングライブラリとスレッドに対して安全な C 実行時ライブラリとリンクします。コンパイルとリンクを 個別ステップで行い、またコンパイルを -xparallel で行う場合、リンクも -xparallel で行なってください。

-xpg
    -pg と同様です。

-xprofile=p
    プロファイル用のデータを収集、または最適化するために プロファイルを使用します。

    p は、 collect、 use[: <ディレクトリ> ] または tcov でなければなりません。

    このオプションにより、実行中に実行の頻度データを収集して 保存します。このデータは以降の実行パフォーマンスを 向上させるために使用することができます。このオプションは、 最適化レベルが指定されている場合にのみ、有効です。

    collect
        後でオプティマイザが使用する実行頻度データを収集して、 保存します。

    use [:<ディレクトリ>]
        コンパイラが保存した実行頻度データを使用します。
        <ディレクトリ> には、プロファイルデータのあるディレクトリを指定してください。

    tcov
        ヘッダーファイルにソースコードを持つプログラム、または C++ テンプレートを使用するプログラムのデータを正しく収集します。 -xa を参照してください。

-xreduction
    自動並行化の縮約のループを解析します。縮約 ループの並行化を可能とするためには、 -xreduction と -xautopar の両方を指定してください。

    -xreduction を指定して、 -xautopar を指定しないと、コンパイラは警告を発します。

    このオプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを 必要とします。より高速なコードを作成するためには、 このオプションを複数プロセッサ SPARC システムで 使用してください。単一プロセッサシステムでは、 生成されたコードは通常低速で実行されます。

    縮約時には常に四捨五入誤りが発生する 可能性があります。

    並列化する縮約ループがある場合は、 -xreduction を
    -xautopar と共に使用してください。 明示的なプラグマは使用しないでください。それは、 明示的なプログラムを使用するとそのループの縮約が 行われず、不正な結果が返されます。

-xregs=r
    生成されたコードのレジスタの使用方法を指定します。

    r には [no%]appl と [no%]float の 1 つ以上をコンマで区切って指定します。

    例: -xregs=appl,no%float

    その意味は次のとおりです。

    appl
        レジスタ g2、 g3、 および g4 の使用を可能とします。

    no%appl
        appl レジスタを使用しません。

    float
        SPARC ABI で指定した浮動小数点レジスタを使用可能とします。

    no%float
        浮動小数点レジスタを使用しません。

    デフォルト値は、 -regs=appl,float です。

-xrestrict=f
    ポインタ値の関数引数を制限付き (restricted) ポインタとして 扱います。f には、関数引数、%all、%none の 1 つ以上を コンマで区切って指定します。このコマンド 行オプションは、単独でも使用できますが、 -xO3 以上の最適化と共に使用するのが最適です。

    デフォルト値は %none です。 -xrestrict を指定することは、 -xrestrict=%all を指定することと等価です。

-xs dbx のための 自動読み取りを無効にします。このオプションは .o ファイルを一緒に保存しておくことができない場合に使用します。-s オプションはアセンブラに引き渡されます。

    自動読み取りを使用しないと、旧来の方法によるシンボル テーブルのロードを行います。この場合、実行可能ファイルに dbx のすべてのシンボルテーブルを設定します。

    自動読み取りは、シンボルテーブルをロードするための新しい 方法で、これはデフォルト設定されています。自動読み取りを 使用すると、情報が .o ファイルに分散されるため、 dbx は、シンボルテーブル情報を必要なときにだけロードします。 そのため、リンカーによるリンクと dbx による初期化が高速で行われます。

    -xs の場合、実行可能ファイルを他のディレクトリに移動して dbx を使用すれば、オブジェクトファイル (.o) を無視してもかまいません。

    -xs を使用しない場合、実行可能ファイルを移動するときは、ソース ファイルとオブジェクトファイル (.o) の両方を移動するか、 dbx パスマップでパスを設定するか、またはコマンドを 使用しなければなりません。

-xsafe=mem
    コンパイラは、メモリーに基づくトラップが発生しないことを 前提として動作します。

    このオプションは、V9 マシン上で推測的ロード命令を 使用する許可を与えます。

-xsb
    -sb と同様です。

-xsbfast
    -sbfast と同様です。

-xsfpconst
    接尾辞を持たない浮動小数点定数を、デフォルトモードの 倍精度ではなく、単精度として表現します。これは、 -Xc と共に使用することはできません。

-xspace
    コードサイズを拡大するような最適化は行いません。たとえば、 ループの展開は行いません。

-xstrconst
    -strconst と同様です。

-xtarget=t
    命令セットと最適化のためのターゲットシステムを指定します。

    t は、 native、 generic、 <システム名> のいずれか 1 つでなければなりません。

    -xtarget オプションは、実際のシステムで発生する
    -xarch、 -xchip、 および -xcache の組み合わせを迅速に、かつ容易に指定可能とします。 -xtarget の存在意義は、
    = の後に指定した値を展開したものにあります。

    -xtarget の値は次のとおりです。

    native
        ホストシステム上で最上のパフォーマンスを取得します。

    generic
        汎用アーキテクチャ、チップ、およびキャッシュの最上の パフォーマンスを取得します。これはデフォルトです。

    <システム名>
        指定されたシステムについて最上のパフォーマンスを取得します。
        有効なシステム名は次のとおりです。
        sun4/15、sun4/20、sun4/25、sun4/30、sun4/40、sun4/50、sun4/60、sun4/65、 sun4/75、sun4/110、sun4/150、sun4/260、sun4/280、sun4/330、sun4/370、 sun4/390、sun4/470、sun4/490、sun4/630、sun4/670、sun4/690、sselc、 ssipc、ssipx、sslc、sslt、sslx、sslx2、ssslc、ss1、ss1plus、ss2、 ss2p、ss4、ss5、ssvyger、ss10、ss10/hs11、ss10/hs12、ss10/hs14、 ss10/20、ss10/hs21、ss10/hs22、ss10/30、ss10/40、ss10/41、ss10/50、ss10/51、 ss10/61、ss10/71、ss10/402、ss10/412、ss10/512、ss10/514、ss10/612、 ss10/712、ss20/hs11、ss20/hs12、ss20/hs14、ss20/hs21、ss20/hs22、 ss20/51、ss20/61、ss20/71、ss20/502、ss20/512、ss20/514、 ss20/612、ss20/712、ss600/41、ss600/51、ss600/61、ss600/120、 ss600/140、ss600/412、ss600/512、ss600/514、ss600/612、ss1000、 sc2000、cs6400、solb5、solb6、ultra、ultra2, ultra1/140, ultra1/170, ultra1/200, ultra2/1170, ultra2/1200, ultra2/1300, ultra2/2170, ultra2/2200, ultra2/2300, entr2, entr2/1170, entr2/2170, entr2/1200, entr2/2200, entr150, entr3000, entr4000, entr5000, entr6000.

        実際のシステム名と番号のニーモニックコードを示す -xtarget 展開については、『C ユーザーズガイド』の -xtarget=t の項を参照してください。

    このオプションはマクロです。
    -xtarget のそれぞれの値は、 -xarch、
    -xchip、 および -xcache オプションの特定の値の組み合わせに展開されます。たとえば、 -xtarget=sun4/15 は、
    -xarch=v8a -xchip=micro -xcache=2/16/1 と等価です。

-xtemp= <ディレクトリ>
    一時ファイルのディレクトリを <ディレクトリ> に設定します。

-xtime
    -time と同様です。

-xtransition
    K&R C と ANSI C 間の相違について、警告を発します。

-xunroll=n
    -unroll と同様です。

-xvpara
    並行化すると安全が保証されない可能性のあるループについて、警告を発します。 コンパイラは、依存関係を持つ明示的に並行化された各ループを 検出すると、警告メッセージを発行しますが、ループは 並行化します。これは、
    -xexplicitpar オプションおよび MP 指示語と共に使用してください。

    このオプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを 必要とします。

-Yc, <ディレクトリ>
    ライブラリファイルを探すデフォルトディレクトリを変更します。

-Zll
    SPARCworks/iMPact 製品に含まれている lock_lint(1) プログラム用に コンパイルされた各 .c ファイルにつき 1 つの lock_lint データベースファイル (.ll ファイル) を作成します。 実際のコンパイルは行いません。

-Zlp
    ループプロファイラである looptool のための オブジェクトファイルを準備します。その後、looptool(1) ユーティリティを実行して、プログラムについてのループ統計値を 生成することができます。このオプションは、 -xdepend と共に使用してください。 -xdepend が明示的にも暗黙的にも指定されていないと、 -xdepend を起動して、警告を発します。最適化が -O3 以上でない場合、 最適化は -O3 に上げられ、警告が発せられます。

    -Zlp オプションは、SPARCworks/iMPact マルチプロセッサ拡張パッケージを必要とします。

acc は、-r、-u、 -YP,<ディレクトリ>、-z を認識し、 これらのオプションとそれぞれの引数を ld に渡します。 また、認識できなかったオプションも ld に渡し、 そのことに対する警告を出します。

  プラグマ

コンパイルシステムは以下の #pragmaを認識します。
#pragma align, #pragma fini, #prama init, #pragma ident, #pragma int_to_unsigned, #pragma MP serial_loop, #pragma MP serial_loop_nested, #pragma MP taskloop, #pragma nomemorydepend, #pragma no_side_effect, #pragma pack, #pragma pipeloop, #pragma redefine_extname, #pragma unknown_control_flow, #pragma unroll, #pragma weak.

#pragma redefine_extname に関する注意事項
このプラグマにより、オブジェクトコード中で外部から参照 できるように定義された旧外部参照名は、新外部参照名に再定義されます。 これにより、リンク時にローダーから参照される名前は、新外部参照名 だけになります。

関数定義、初期設定子、または式のいずれかとして旧外部参照名を最初に使用した後、 pragma redefine_extname が指定されていると、結果は未定義になります。

コンパイラは、オブジェクト形式のマクロ _PRAGMA_REDEFINE_EXTNAME を 事前定義して、このプラグマが認識可能であることを示します。

プラグマの詳細については、『C ユーザーズガイド』を参照してください。

ファイル
a.out
    実行可能出力ファイル
<ファイル>.a
    オブジェクトファイルのライブラリ
<ファイル>.c
    C ソースファイル
<ファイル>.d
    tcov(1) テストカバレージ入力ファイル
<ファイル>.i
    プリプロセッサ処理後の C ソースファイル
<ファイル>.il
    インライン展開ファイル
<ファイル>.o
    オブジェクトファイル
<ファイル>.s
    アセンブラソースファイル
<ファイル>.tcov
    tcov(1) からの出力ファイル
acc コンパイラコマンド行ドライバ
acomp
    コンパイラフロントエンド
cg  コード生成部
crt1.o
    実行時起動コード
crti.o
    実行時起動コード
crtn.o
    実行時起動コード
fbe アセンブラ
gcrt1.o
    gprof(1) でプロファイルを生成するための実行開始コード
gmon.out
    -pg 用のデフォルトのプロファイルファイル
iropt
    大域オプティマイザ
mcrt1.o
    prof(1) および intro(3) でプロファイルを生成するための実行開始コード
mon.out
    -p 用のデフォルトのプロファイルファイル
SunWS_cache
    -xsb または -xsbfast フラグが指定されている際に、 sbrowser(1) のデータを格納するために使用するディレクトリ

関連項目
ar(1), as(1), cflow(1), ctags(1), cxref(1), dbx(1), gprof(1), ld(1), lint(1), m4(1), make(1S), prof(1), tcov(1)

『C ユーザーズガイド』

『プログラミング言語 C』第 2 版、B. W. Kernighan、D. M. Ritchie 共著、共立出版

診断
C コンパイラから出される診断は、できるだけ自明で分かりやすいように 心掛けています。ただしプリプロセッサ、アセンブラ、ローダーからは、不明瞭な メッセージが出されることがあります。