プリプロセッサの制御方法
プリプロセッサの制御方法
表 2-3. 事前定義マクロ名
† ANSI/ISO 規格で定義
表 2-3. のマクロ名は、他の定義名と同じように使用できます。たとえば次のとおり
です。
printf ( "%s %s" , _ _TIME_ _ , _ _DATE_ _);
この場合は、次のような行に変換されます。
printf ("%s %s" , "13:58:17", "Jan 14 1997");
2.5.2 #include ファイル検索パス
#include プリプロセッサ疑似命令は、別のファイルからソース文を読み取るようにコ
ンパイラに指示します。ファイルを指定する際には、ファイル名を二重引用符か不 等号括弧で囲んでください。ファイル名には、絶対パス名、部分的なパス情報、ま
マクロ名 説明
__DATE__† mm dd yyyy 形式でコンパイルした日付に展開しま
す。
__FILE__† カレント・ソース・ファイル名に展開します。
_INLINE -x または -x2 オプションを指定した場合は 1 に展
開します。指定しない場合は、未定義になりま す。
__LINE__† カレント行番号に展開します。
__TI_COMPILER_VERSION__ カレント・コンパイラ・バージョン番号を示す整
数値に展開します。たとえば、バージョン 1.20 は、120 として示されます。
__TIME__† hh:mm:ss 形式でコンパイル時刻に展開します。
__TMS320C2000__ 1 に展開します(C28x または C27x のプロセッサ
を識別します)。
__TMS320C28XX__ 1 に展開します(C28x プロセッサを識別します)。
__LARGE_MODEL__ -ml オプションを指定した場合は 1 に展開します。
指定しない場合は、未定義になります。
プリプロセッサの制御方法
2) -Iオプションで指定されたディレクトリ
3) C_DIR 環境変数で設定されたディレクトリ
❏ ファイル名を不等号括弧(< >)で囲んだ場合、コンパイラは次の順にディレクト リを検索して該当のファイルを探します。
1) -Iオプションで指定されたディレクトリ
2) C_DIR 環境変数で設定されたディレクトリ
-I オプションの使用方法については、2.5.2.1 項「#include ファイル検索パスの変更
(-I オプション)」を参照してください。
2.5.2.1 #include ファイル検索パスの変更(-I オプション)
-I オプションは、#include ファイルを格納する代替ディレクトリ名を指定します。
-I オプションの形式は次のとおりです。
-I=directory1 [-I=directory2 ...]
それぞれの -I オプションが 1 つの directory 名を指定します。C/C++ ソースでは、
ファイルについてのディレクトリ情報を指定せずに、#include 疑似命令を使用するこ とができます。その場合は、-I オプションでディレクトリ情報を指定します。たと えば、カレント・ディレクトリに source.c という名前のファイルがあるとします。こ
の source.c ファイルには、次のような疑似命令文が入っています。
#include "alt.h"
alt.h の完全なパス名を次のように仮定します。
次の表に、コンパイラの起動方法を示します。ご使用のオペレーティング・システ ムに対応するコマンドを選択してください。
Windows c:\c28xtools\files\alt.h
UNIX /c28xtools/files/alt.h
プリプロセッサの制御方法
注: 不等号括弧でパス情報を指定する方法
不等号括弧でパス情報を指定すると、コンパイラは -I オプションや C_DIR 環境変 数で指定されたパス情報に関連した情報を適用します。
たとえば、次のコマンドを使用して C_DIR を設定する場合 set C_DIR= c:\project\include
または、次のコマンドを使ってコンパイラを起動する場合 cl2000 -v28 -i c:\project\include file.c いずれの場合でも結果的に file.c には、次の行が含まれます。
#include <module\proc.h>
インクルード・ファイルは、次のようなパスになります。
c:\project\include\module\proc.h
2.5.3 前処理リスト・ファイルの生成方法(-ppo オプション)
-ppo オプションを指定すると、ソース・ファイルの前処理したバージョンを作成す ることができます。この前処理したファイルは、ソース・ファイルと名前が同じで すが、拡張子は .pp です。コンパイラの前処理機能は、ソース・ファイル上で以下の 操作を実行します。
❏ バックスラッシュ(\)で終わっている各ソース行と、次の行との連結
❏ 3 文字符号系列の展開
❏ コメントの除去
❏ ファイルへの #include ファイルのコピー
❏ マクロ定義の処理
❏ すべてのマクロの展開
❏ #line 疑似命令、条件付きコンパイルなど、他のすべての前処理疑似命令の展開
2.5.4 前処理後のコンパイルの続行方法(-ppa オプション)
前処理を行う場合、プリプロセッサは前処理だけを行います。デフォルトではソー
プリプロセッサの制御方法
2.5.5 コメント付き前処理リスト・ファイルの生成方法(-ppc オプション)
-ppc オプションはコメントの除去を除いてすべての前処理機能を実行し、.pp 拡張子
が付いた前処理済みバージョンのソース・ファイルを生成します。コメントを保持 したい場合は、-ppo オプションではなく -ppc オプションを指定します。
2.5.6 行の制御情報付き前処理リスト・ファイルの生成(-ppl オプション)
デフォルトでは、前処理された出力ファイルにはプリプロセッサ疑似命令は入って いません。#line 疑似命令を出力させたい場合は、-ppl オプションを指定してくださ
い。-ppl オプションは前処理だけを実行し、名前がソース・ファイルと同じであり
.pp 拡張子が付いたファイルに、行の制御情報(#line 疑似命令)と一緒に前処理済み 出力を書き込みます。
2.5.7 Make ユーティリティ用の前処理出力の生成方法(-ppd オプション)
-ppd オプションは前処理だけを実行します。ただし前処理された出力を書き込むの
ではなく、標準 make ユーティリティへの入力に適した従属行のリストを書き込みま す。このリストは、ソース・ファイルと名前が同じであり .pp 拡張子が付いたファイ ルに書き込まれます。
2.5.8 #include 疑似命令で組み込むファイルのリストの生成方法(-ppi オプション)
-ppi オプションは前処理だけを実行します。ただし前処理された出力を書き込むの
ではなく、#include 疑似命令で組み込まれているファイルのリストを書き込みます。
このリストは、ソース・ファイルと名前が同じであり .pp 拡張子が付いたファイルに 書き込まれます。
診断メッセージの概要