JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C++ ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

2.1 はじめに

2.2 コンパイラの起動

2.2.1 コマンド構文

2.2.2 ファイル名に関する規則

2.2.3 複数のソースファイルの使用

2.3 バージョンが異なるコンパイラでのコンパイル

2.4 コンパイルとリンク

2.4.1 コンパイルとリンクの流れ

2.4.2 コンパイルとリンクの分離

2.4.3 コンパイルとリンクの整合性

2.4.4 64 ビットメモリーモデル用のコンパイル

2.4.5 コンパイラのコマンド行診断

2.4.6 コンパイラの構成

2.5 指示および名前の前処理

2.5.1 プラグマ

2.5.2 可変数の引数をとるマクロ

2.5.3 事前に定義されている名前

2.5.4 警告とエラー

2.6 メモリー条件

2.6.1 スワップ領域のサイズ

2.6.2 スワップ領域の増加

2.6.3 仮想メモリーの制御

2.6.4 メモリー条件

2.7 C++ オブジェクトに対する strip コマンドの使用

2.8 コマンドの簡略化

2.8.1 C シェルでの別名の使用

2.8.2 CCFLAGS によるコンパイルオプションの指定

2.8.3 make の使用

2.8.3.1 make での CCFLAGS の使用

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

5.  プログラムの編成

6.  テンプレートの作成と使用

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

2.5 指示および名前の前処理

この節では、C++ コンパイラ特有の前処理の指示について説明します。

2.5.1 プラグマ

プリプロセッサ指令 pragma は C++ 標準の一部ですが、書式、内容、および意味はコンパイラごとに異なります。C++ コンパイラが認識するプラグマ (指令) の詳細は、付録 B プラグマを参照してください。

Oracle Solaris Studio C++ は、C99 のキーワードである _Pragma もサポートしています。次の 2 つの呼び出しは同等です。

#pragma dumpmacros(defs)     
_Pragma("dumpmacros(defs)") 

#pragma の代わりに _Pragma を使用するには、プラグマテキストをリテラル文字列として記述し、_Pragma キーワードの 1 つの引数として括弧で囲みます。

2.5.2 可変数の引数をとるマクロ

C++ コンパイラでは次の書式の #define プリプロセッサの指示を受け入れます。

#define identifier (...) replacement-list
#define identifier (identifier-list, ...) replacement-list

マクロパラメータリストの終わりが省略符号である場合、マクロパラメータより多くの引数をマクロの呼び出しで使用できます。追加の引数は、マクロ交換リストにおいて __VA_ARGS__ という名前で参照できる、コンマを含んだ単一文字列にまとめられます。

次の例は、変更可能な引数リストマクロの使い方を示しています。

#define debug(...) fprintf(stderr, __VA_ARGS__)
#define showlist(...) puts(#__VA_ARGS__)
#define report(test, ...) ((test)?puts(#test):\
                        printf(__VA_ARGS__))
debug(“Flag”);
debug(“X = %d\n”,x);
showlist(The first, second, and third items.);
report(x>y, “x is %d but y is %d”, x, y);

この結果は、次のようになります。

fprintf(stderr, “Flag”);
fprintf(stderr, “X = %d\n”, x);
puts(“The first, second, and third items.”);
((x>y)?puts(“x>y”):printf(“x is %d but y is %d”, x, y));

2.5.3 事前に定義されている名前

付録の 「A.2.8 -Dname[ =def]」 は、事前に定義されているマクロを示しています。これらの値は、#ifdef のようなプリプロセッサに対する条件式の中で使用できます。+p オプションを指定すると、sununixsparc、および i386 の事前定義マクロは自動的に定義されません。

2.5.4 警告とエラー

#error および #warning プリプロセッサディレクティブを使用すると、コンパイル時の診断を生成できます。

#error token-string
エラー診断 token-string を発行して、コンパイルを終了します。
#warning token-string

警告診断 token-string を発行してコンパイルを続行します。