Compaq CはX3J11技術委員会が規定し,『American National Standard for Information Systems- Programming Language C』(文書番号:X3.159-1989)に文書化されたプログラミング言語C のANSI規格に準拠しています。Compaq Cは, ANSI規格準拠に関するPlum-Hallテストをパスしました。厳密なANSI C規格モードでは, Compaq CコンパイラはANSI C規格のセクション1.7 準拠に次のように記述されている規格準拠の処理系です。
「規格準拠のホスト処理系は,厳密な規格準拠のプログラムをすべて受け入れるものとする。 規格準拠の処理系は,言語の拡張が厳密な規格準拠のプログラムの動作を変えないという条件で( 追加のライブラリ関数を含めて) 拡張機能を持つことができる。」
ANSI C規格では,厳密な規格準拠のプログラムを次のように定義しています。
「厳密な規格準拠のプログラムは,この規格に規定された言語およびライブラリの機能だけを使用するものとする。 同プログラムは未指定, 未定義,または処理系定義の動作に依存する出力を生成してはならず, 最小の処理系の限界を超えてはならない。」
「処理系には,すべての処理系定義の特性および拡張を定義したドキュメントが伴うものとする。 」
ANSI C規格はほとんどの言語定義と同様に,1つの処理系で利用可能なC言語の定義全体を含むものではありません。 弊社が現在サポートしているC の処理系には,ANSI C規格では定義されていない多数の機能が組み込まれています。
この節では,コンパイラの機能をANSI C規格の概要を反映する形式で説明します。 各見出しの後ろの括弧内に,関連するANSI C規格のセクション番号を示しています。 説明にANSI C規格の見出しが省略されている場合は, Compaq Cが規格に厳密に準拠しており,拡張または処理系定義の動作がないことを示します。
以降の各節には,Compaq C言語の拡張部分と処理系定義の部分だけを記述しています。 この節は,ANSI C規格とともにC言語のCompaq C処理系を完全に規定します。 この付録では,ANSI C規格を単に「規格」と呼びます。
診断メッセージは,規格に規定されている構文規則または制約の最初の違反に対して生成されます。 それ以降の違反は,以前の違反によって隠されない場合のみ報告されます。
envp
を含めて
main()
の実引数の意味は,プログラミング環境によって決まります。
main()
の実引数についての詳細は,プラットフォームに固有の
Compaq Cのマニュアルを参照してください。
多バイト文字のコード化に使用するシフト状態は,ローカル・システムで利用可能な変換テーブルに依存します。 ローカル・システムの変換テーブルによりサポートされている場合は, 特定の文字集合はその言語によりサポートされます。
ソース文字集合の文字定数または文字列リテラル内の要素は,実行文字集合の要素へ直接マップされます。 規格に定義されているもの以外のエスケープ・ シーケンスは,警告の診断メッセージが出されて,バックスラッシュは無視されるため, 文字定数または文字列リテラルの値は,バックスラッシュが存在しない場合と同様になります。
マシン・アーキテクチャとオペレーティング・システムに差異があるため, 翻訳限界はプラットフォームによって異なります。それ以外において翻訳限界は存在しません。
次の一覧は,Compaq Cで設定している限界のみを示しています。規格にあっても次の一覧には存在しない翻訳限界は, Compaq Cでは設定されていないものです。
Tru64 UNIXシステムの場合
OpenVMSシステムの場合
Compaq Cの数量的限界は,limits.h
および
float.h
のヘッダ・ファイルに定義されています。
これらのヘッダ・ファイルには,以下の記述に合わせて設定された処理系定義の値が入っています。
char
型の値の表現とセットは
signed char
型の場合と同じです。コマンド行オプションを使用して,
この同値を signed char
から unsigned char
に変更することができます。
int
および signed int
型の値の表現とセットは
long
型(32ビット)の場合と同じです。
unsigned
int
型の値の表現とセットは unsigned
long
型(32ビット)の場合と同じです。
long int
および
unsigned long int
型は64ビットであり,
int
およびunsigned int
型は32ビットです。
long double
型の値の表現とセットは
double
型(64ビット)の場合と同じです。
ここに記述されていない限界については,規格に示されています。
キーワード__inline
,__unaligned
,および
__restrict
は,OpenVMS Alphaシステムおよび
Tru64 UNIXシステム上でサポートされています。
VAX Cのキーワードはすべて,VAX Cモードでサポートされます。これらのキーワードには次のものがあります。
_align
globaldef
globalref
globalvalue
noshare
readonly
variant_struct
variant_union
次のキーワードはTru64 UNIXシステム上では受け入れられますが, 警告が出されます。
_align
noshare
readonly
Tru64 UNIXシステムでは,globaldef
宣言と初期化された
globalvalue
宣言は外部宣言として扱われます。
globalref
宣言と初期化されていない
globalvalue
宣言は,extern
を宣言した場合と同様に扱われます。
MAIN_PROGRAM
オプションも,OpenVMS
システムではVAX C互換性オプションで利用できます。
識別子にはドル記号($)を含めることができます。ただし,厳密なANSIモードでは警告が出されます。
Tru64 UNIXシステムにおいて外部結合を持つ識別子を指定する場合, 大文字と小文字は識別されます。
OpenVMSシステムでは,省略時の設定により外部結合を持つ識別子名はすべて大文字に変換されますが, これはコマンド行オプションで制御することができます。
1つの翻訳単位内で同じ識別子が内部結合と外部結合の両方で現れた場合は, エラーが報告されます。
char
型と signed char
型は同じ値の表現とセットを持ちます。
ただし,unsigned
のコンパイル時オプションを指定した場合には,char
型と
unsigned char
型が同じ値の表現とセットを持ちます。
コモンCおよびVAX Cモードでは,数字の8と9は有効な8進数字として許されますが, 警告メッセージが出されます。
2つ以上の文字またはワイド文字を含む文字定数は,エラー検査のコンパイル・
オプションにより警告の診断メッセージが出され,整数値として格納されます。2
文字以上の文字定数は,コモンCとの互換性のために最終文字が最下位バイトで表現されます。
基本実行文字集合には存在しない,8
進または16進のエスケープ・シーケンスを含む整数文字定数の表現は,エスケープ・
シーケンスの8進数または16進数によって指定される値です。
その値は,unsigned
のコンパイル時オプションが有効かどうかに応じて符号付きまたは符号なし
char
として解釈されます。
wchar_t
ワイド文字定数の型は unsigned
int
です。
同一の文字列リテラルは識別する必要がないと規格では規定されているため, 文字列リテラルを変更した場合の動作は定義されていません。したがって, 文字列リテラルまたはワイド文字列リテラルを変更すると,エラーになります。
旧形式の複合代入演算子(=+,=-,=*,=/,=%など)は,規格には定義されていません [1]。したがって,式 =単項演算子 式 といった形式を持つ式では, =単項演算子 が以前は代入演算子と解釈されていましたが,=単項演算子 は現在では2つのトークン,すなわち代入演算子と単項演算子 とに解釈されます。
エラー検査オプションを指定した場合は,=-,=*,=&,=+ (空白が入らない) に対して警告メッセージが出され,この意味の変更を知らせます。エラー検査オプションを指定しない場合には, メッセージは出されません。
初期バージョンのCでは,汎整数拡張規則の実現に対して2つの異なる方法が取られていました。
最初の方法は符号なし保存
と呼ばれ,unsigned char
および
unsigned short
が unsigned
int
へ拡張されます。2番目の方法は値保存
と呼ばれ,値を表現できる場合には unsigned
char
および unsigned short
が signed int
へ拡張されます。
表現できない場合には unsigned int
へ拡張されます。規格では,汎整数拡張は値保存であると規定されています。
コモンCおよびVAX Cモード以外のすべてのモードではこの方法に従っており,
符号なし保存の算術変換に依存するプログラムは別の方法で解釈されます。
符号なし保存規則に依存する算術変換を検索できるようにするため,値保存規則の影響を受けるような
unsigned char
および unsigned short
から int
への汎整数拡張には,エラー検査オプションを使用するとフラグが付けられます。
符号付き整数へ縮小された整数の値が大きすぎて表現できない場合,結果は切り捨てられ, 余分の上位ビットは破棄されます。これは,コモンCおよびVAX C に互換性があります。
同じサイズの符号付き整数と符号なし整数の間の変換では,表現の変更はありません。
整数を浮動小数点数に変換して正確に表現できない場合,変換の結果は正確に表現できる最も近い値になります。 この結果はハードウェア上での変換の自然の結果であって, 元の値より大きくなったり小さくなったりすることがあります。
コンパイル時に浮動小数点数を整数または別の浮動小数点型に変換して結果を表現できない場合, コンパイラは診断メッセージを出します。
汎整数または倍精度浮動小数点数を浮動小数点数に変換して元の値を正確に表現できない場合,
結果は
float
型の最も近い値に丸められます。詳細については,
『MIPS R-Series Processor Architecture
Manual』または『VAX Architecture
Manual』など使用しているプラットフォームに固有のアーキテクチャ・
マニュアルを参照してください。
double
値を float
に縮小する際に,
変換する値が表現できる値の範囲にあるのに正確に表現できない場合,
結果は最も近い上位値または下位値になります。DEC
Cでは,結果を最も近い表現可能な float
値に丸めます。
同様の丸めは,long double
から
double
または float
へ縮小する際にも行われます。
たとえ2つの型が同じ表現であっても(int
と
long
のように),型はやはり異なります。
つまり,int
へのポインタを
long
へのポインタに割り当てるには,キャスト演算子を使用しなければなりません。
この規則は,コモンCおよびVAX Cモードでは緩和されます。ポインタ変換では表現の変更はありませんが, 一部のマシンでは境界調整制約のため未調整のポインタによるアクセスは, アクセス時間の遅延,マシン例外,または予想できない結果を生じることがあります。
値を保持しているメンバとは異なる共用体メンバにアクセスした場合の結果は, メンバのデータ型とその共用体内での境界調整によって異なります。
sizeof
演算子の型は size_t
です。この型は配列の最大サイズを保持するために必要な整数の型ですが,
Compaq Cはこの型を <stddef.h>
ヘッダの中で
unsigned int
として定義しています。
ポインタは汎整数型に変換できると規格では規定していますが,必要な整数のサイズと結果は処理系定義です。
ポインタは,int
型または
long
型(あるいはその
unsigned
の同値)のオブジェクトと同じ記憶量を占有します。
したがって,ポインタはこれらの整数型のいずれにも変換することができ,
値を変更せずに元に戻すことができます。スケーリングは行われず,
値の表現は変化しません。
ポインタと char
などの短整数型の間の変換は,
unsigned long
型のオブジェクトと短整数型の間の変換と同様です。
ポインタの上位ビットは破棄されます。短整数とポインタの間の変換は,
短整数型と unsigned long
の間の変換と同様です。短整数型が符号付きの場合,ポインタの上位ビットは符号ビットのコピーで充填されます。
エラー検査のコンパイル・
オプションを使用した場合には,これらの型のキャスト演算に対してメッセージが出されます。
規格では,除算演算子および剰余演算子に移植可能な意味を与えていません。 Compaq Cでは次の意味に従います。
次のような未定義動作がコンパイル時に検出された場合,コンパイラは警告を出します。
同じ配列のメンバへのポインタで減算を行うことができます。結果は2
つの配列メンバの間の要素の数であり,結果の型は
ptrdiff_t
です。Compaq Cでは,この型を
int
と定義しています。
E1 >> E2
の結果は,E2
ビット位置だけ右へシフトした
E1
です。
E1
が符号付き型の場合,結果の値は空いた上位ビットに
E1
の符号ビットのコピーが充填された E1
のシフト値です(算術シフト)。
register
記憶域クラス指定子は,オブジェクトへのアクセスをできるだけ速く行うように指定します。
register
の指定は,変数をレジスタに格納する確率を高くするために行われます。
ただし,コンパイラのレジスタ割当て技法により,
register
キーワードはもはや使用されなくなりました。
つまり,Compaq Cではすべての
register
要求を受け入れて無視します。
コモンCおよびVAX Cとの互換性のため,long float
の組み合わせは double
の同義語としてサポートされます。
ただし,省略時のモードまたは厳密なANSIモードでコンパイルした場合にこの組み合わせを使用すると警告が出されます。
int
ビット・フィールドの最上位ビット位置は,VAX C
互換性モード以外では符号ビットとして扱われません。
つまり,int
型はどのビット・フィールド型の場合も,
unsigned int
と同じ型であることを指定します。VAX C
モードでは,int
型はどのビット・フィールド型の場合も,
signed int
と同じ型であることを指定します。
変形構造体および共用体はVAX Cの拡張機能であり,ネストした構造体および共用体を外側の集合体のメンバとして宣言できます。 これにより,これらのメンバの参照時に中間修飾子を指定する必要がなくなります。 これらの機能は,VAX C モードでのみ利用可能です。
これらの拡張機能についての詳細は,プラットフォームに固有のDEC Cのマニュアルを参照してください。
構造体の境界調整とサイズは,各プラットフォームにおける構造体の構成要素の境界調整条件とサイズの影響を受けます。 構造体はどのバイト境界からでも開始することができ, 整数バイト数であれば任意のバイト数を占有できます。 ただし,個々のアーキテクチャまたはオペレーティング・システムは, 特定の境界調整およびパディング条件(プラグマおよびコマンド行オプションで変更可能) を指定することがあります。
OpenVMS AlphaおよびTru64 UNIXシステムでは,非ビット・ フィールドの構造体メンバは,省略時の設定では自然に境界調整されます。
省略時の構造体の境界調整は,構造体内の任意のメンバが必要とする最大の境界調整です。 構造体はサイズ(バイト単位)が境界調整条件の倍数になるようにパッドされて, 構造体または共用体が配列のメンバである場合に適切な境界調整が行えるようにします。
構造体の構成要素は,宣言された順にメモリ内に格納されます。最初の構成要素は構造体全体と同じアドレスです。 構成要素間にパディングを挿入して, 個々の構成要素の境界調整条件を満たします。
ビット・フィールドはどんな汎整数型でも構いません。ただし,型が
int
,unsigned int
,または
signed int
以外の場合に,コンパイラはエラー検査オプション指定時には警告を出します。
ビット・フィールドが存在すると,
構造体または共用体全体の境界調整は少なくともビット・フィールドの基本型の境界調整と同じになります。
他のビット・フィールドの直後に宣言されないビット・フィールド(長さ0 のビット・フィールドを含む)では,境界調整条件はその基本型が課したものとなります。 ビット・フィールドは,(ビット・フィールドの基本型と同じサイズの) 境界調整単位内で下位から上位へ割り当てられます。
#pragma member_alignmentが有効に設定されていると,あるビット・フィールドが別のビット・ フィールドの直後に続くとき,十分な領域が残っている場合にはそのビットは同じ単位内の隣接する領域へパックされます。 十分な領域が残っていない場合には最初のビット・フィールドの終わりにパディングが挿入され,2 番目のビット・フィールドは次の単位へ置かれます。
#pragma nomember_alignmentが有効に設定されていると,ビット・フィールドは記憶域単位境界にまたがることができます。Alpha システムでは省略時にはmember_alignment に設定され,VAXシステムでは省略時にはnomember_alignment に設定されます。
char
基本型のビット・フィールドは,8ビット以上でなければなりません。
short
基本型のビット・フィールドは,16ビット以上でなければなりません。
OpenVMS VAXシステムでは,構造体または構造体メンバを特定の境界に調整する必要はなく, 非ビット・フィールド構造体メンバは特に指定しない限りバイトで調整されます。
構造体の構成要素は,宣言された順にメモリ内に格納されます。最初の構成要素は構造体全体と同じアドレスです。 各構成要素は,それぞれ前の構成要素の直後に次々に格納されます。
次のプラグマを使用すると,構造体メンバを通常の境界調整にすることができます。
#pragma member_alignment
『Compaq C for OpenVMSシステム ユーザーズ・ガイド』には,OpenVMS VAX上における構造体の境界調整の例と図が掲載されています。
ビット・フィールドはどの汎整数型でも構いません。
ただし,/STANDARD=
ANSI89が指定され,型が
int
,unsigned int
,または
signed int
以外の場合にはコンパイラは警告を出します。
ビット・フィールドは,単位内で下位から上位へ割り当てられます。
あるビット・フィールドが別のビット・フィールドの直後に続く場合は,
たとえそれが別のバイトへオーバフローしてもそのビットは隣接する領域へパックされます。
ただし,名前のないビット・フィールドを長さ0
と指定した場合には,直後のビット・フィールドが次のバイト境界から始まるようにパディングが挿入されます。
『Compaq C for OpenVMSシステム ユーザーズ・ガイド』に,OpenVMS VAX上におけるビット・ フィールドの境界調整の例と図が掲載されています。
規格では,列挙型はそれぞれ処理系定義の整数型と互換性があることを規定しています。
Compaq Cでは,列挙型はそれぞれ
signed int
型と互換性があります。
volatile
記憶域クラスは,コンパイラに未知の方法で変更できる変数に対して指定されます。
したがって,あるオブジェクトがvolatile
と宣言された場合,ソース・コードでこのオブジェクトを参照するたびにオブジェクト・
コードでメモリを参照することになります。
算術型,構造体型,共用体型,または不完全型を変更できるポインタ,関数, または配列宣言子の数に内部限界はありません。
Cでは,論理的に必要ではない場合にも初期化子を中括弧 { } で囲むことができます。これにより,部分的に無視される中括弧を持つ集合体の初期化子は, 実現されたパーサの型に応じて異なる方法で解析されます( ボトムアップまたはトップダウン)。規格では,Kernighan とRitchieの『The C Programming Language, 2nd Edition』の中で初めて指定されたトップダウンを指定しています。 部分的に中括弧で囲まれた初期化子がボトムアップ解析( コモンC解析)に依存するプログラムは,予想外の結果を生じることがあります。 この構成要素は許されてはいますが,コモンCモード, またはエラー検査オプションを使用した場合には警告メッセージが出され, 中括弧が無視されることを通知します。
switch
文中の case
ラベルの数に制限はありません。
コモンCモードでは,すべての extern
オブジェクトはファイル・
スコープを持ちます。
以前のプリプロセッサでは,次の例のように前処理命令の後に余分なテキストを記述することが許されていました。
#endif system1
しかし規格では,前処理命令の後に許されるテキストはコメントだけであることが規定されています。 したがって,この構文規則に違反した場合, Compaq Cコンパイラは警告メッセージを出します。
#if
および #elif
命令内の文字定数の数値は,
これらの命令の一部ではない式の中で同一の文字定数が使用されたときに得られた値と一致します。
二重引用符で囲んだパス名(#include "stdio.h"
)または山括弧で囲んだパス名(
#include <stdio.h>
)を使用して,ソース・
ファイルを取り込むことができます。また,OpenVMSシステムではテキスト・
ライブラリからモジュールを取り込む方法もサポートします。
ソース・ファイルを取り込むための検索パス・アルゴリズムについては,
プラットフォームに固有のCompaq Cドキュメントを参照してください。
規格であらかじめ定義されたマクロ名の他に,Compaq Cコンパイラではさまざまなシステム識別用に別の前処理マクロを定義しています。 コンパイラが起動されると, オペレーティング・システム,アーキテクチャ, 言語,コンパイラ・モード,および他の環境変数に従って,適切な識別マクロが定義されます。 これらのマクロは#ifdef前処理命令で参照すると, 特定の環境に適用するコードを分離することができます。
Compaq Cの各プラットフォームにはあらかじめ定義された追加のマクロがあるかもしれません。 詳細については,プラットフォームに固有の Compaq Cドキュメントを参照してください。
表 B-1に掲載している形式はすべて, 表示されたプラットフォーム上で定義されています。ただし,厳密なANSI モードが有効な場合には新しいつづりだけが定義されます。
表 B-1に示しているのは, Tru64 UNIX上であらかじめ定義されたマクロ名です。
マクロ名 | |
---|---|
オペレーティング・ システム名: | unix |
__unix__ | |
__osf | |
SYSTYPE_BSD | |
_ SYSTYPE_BSD | |
アーキテクチャ名: | __alpha |
製品名: | __DEC C |
__DEC C_VER | |
LANGUAGE_ C | |
__LANGUAGE_ C__ |
表 B-2に示しているのは, OpenVMS VAXおよびAlphaシステム上であらかじめ定義されたマクロ名です。 厳密なANSIモードが有効になっていない場合に限りすべての形式が定義されます。 厳密なANSIモードが有効になっている場合には新しいつづりだけが定義されます。
新しいつづり | 従来のつづり | |
---|---|---|
オペレーティング・システム名: | __vms | vms |
__VMS | VMS | |
__vms_version | vms_version | |
__VMS_VERSION | VMS_VERSION | |
アーキテクチャ名: | __vax (VAX) | vax (VAX) |
__VAX (VAX) | VAX (VAX) | |
__alpha (Alpha) | - | |
__ALPHA (Alpha) | - | |
__Alpha_AXP (Alpha) | - | |
__32BITS (Alpha) | - | |
製品名: | __vaxc | vaxc |
__VAX C | VAX C | |
__vax11c | vax11c | |
__VAX11C | VAX11C | |
__STDC__ | - | |
__DEC C | - | |
__DEC C_VER | - | |
__VMS_V6_RTL_COMPAT | - | |
コンパイラ・モード: | __DEC C_MODE_STRICT | - |
__DEC C_MODE_RELAXED | - | |
__DEC C_MODE_ VAX C | - | |
__DEC C_MODE_COMMON | - | |
浮動小数点: | __D_FLOAT | - |
__G_FLOAT | - | |
__IEEE_FLOAT (Alpha) | - | |
__X_FLOAT (Alpha) | - | |
その他: | __HIDE_FORBIDDEN_NAMES | - |
__INITIAL_POINTER_ SIZE (Alpha) | - |
表 B-3に示すマクロを明示的に定義することにより, どのCライブラリ・ルーチンをヘッダ・ファイルで宣言するかを制御したり, 規格準拠チェックを行うことができます。これらのマクロを定義するには, 次のいずれかを使用します。
マクロ | 規格 |
---|---|
_XOPEN_SOURCE_EXTENDED | XPG4-UNIX |
_XOPEN_SOURCE | XPG4 |
_POSIX_C_SOURCE | POSIX |
_ANSI_C_SOURCE | ISO CおよびANSI C |
_AES_SOURCE (Tru64 UNIX) | アプリケーション環境サービス |
_OSF_SOURCE (Tru64 UNIX) | OSF互換性 |
_VMS_V6_SOURCE (OpenVMS) | OpenVMSバージョン6 互換性 |
_DEC C_V4_SOURCE (OpenVMS) | DEC Cバージョン4 互換性 |
マクロ置換並び内に ##
演算子があると,演算子の両側の2
つのトークンが連結されて,単一のトークンになります。
コモンCおよびVAX Cの互換性モードでは,コメントはマクロ呼出し後に空文字列に置き換えられるため, コメントも2つのトークンを連結することができます。
厳密なANSIモードまたは省略時のモードでは,コメントは単一の空白に置き換えられるので, この動作はサポートされません。
#error
命令はエラー・メッセージを出して,コンパイルを終了します。
規格が承認している言語に拡張機能を追加する方式は,プラグマを追加して行われます。 認識されないプラグマには情報メッセージで診断されます。 サポートされるプラグマはプラットフォームによって異なります。詳細については, プラットフォームに固有のCompaq Cドキュメントを参照してください。
ファイルの前処理だけを行う場合には,Compaq Cで認識されるすべてのプラグマは変更なしで出力へ書き込まれます。
関数のインライン展開は,プロシージャ呼出しのオーバヘッドを排除して, 一般的な最適化方式を展開されたコードに適用することができます。 関数インラインがマクロに比べて優れている点は,実引数が1回だけ評価され, 優先順位の問題を避けるために括弧を多用する必要がなく, また,実際の展開をコマンド行から制御できることです。
次のプラグマを使用すると,関数のインライン展開を制御することができます。
#pragma inline (関数名 [,関数名....]) #pragma noinline (関数名 [,関数名....])
関数が inline
命令の中で指定されたとき,その関数に次の特性がある場合には,
この関数への呼出しはインライン・コードとして展開されます。
noinline
命令の中で指定された場合,
その関数への呼出しはインライン・コードとして展開されません。
inline
または
noinline
命令の中で指定されなかった場合,コンパイラは経験的手法により適切な場合には呼出しのインライン展開を実行します。
inline
および
noinline
命令の両方で指定された場合,コンパイラはエラーを出します。
noinlineのコンパイル・オプションを使用した場合,このオプションはすべての
inline
プラグマ命令を無効にします。
インライン関数の特性は次のとおりです。
varargs
パッケージ(関数が可変個の実引数を取ることを許す)
の使用は,インライン関数では許されません。
Compaq Cは,OpenVMS Alphaシステム上において
#pragma linkage
および
#pragma use_linkage
前処理命令をサポートします。
これらのプラグマは特殊な結合特性を定義する場合,およびこれらの結合特性を関数と関連付ける場合に使用します。 詳細については,プラットフォームに固有の Compaq Cのマニュアルを参照してください。
次のプラグマは,VAX C互換性モードだけで提供されます。
#pragma dictionary CDD_path #pragma module title ident
これらのプラグマは,#dictionary
命令と
#module
命令にそれぞれ対応します。
システムでサポートされている追加のプラグマについては,プラットフォーム固有の Compaq Cマニュアルを参照してください。