C形式のプリプロセッサディレクティブ
構文
#define symbol text
#elif condition
#else
#endif
#error "message"
#if condition
#ifdef symbol
#ifndef symbol
#include {"filename" | <filename>}
#message "message"
#undef symbol
パラメータ
| 絶対アセンブラ式は式、オペランド、演算子を参照してください。 式に、アセンブララベルまたはシンボルを含めることは一切できず、ゼロ以外の値はすべて真と見なされます。Cプリプロセッサ演算子 |
| インクルードされるか参照されるファイルの名前。 |
| 表示されるテキスト。 |
| 定義、定義取り消し、または テストされるプリプロセッサシンボル。 |
| 割り当てられる値。 |
説明
アセンブラには、C89標準にと似たようなC形式のプリプロセッサがあります。
注記
プリプロセッサ式は、アセンブラ演算子と同じ優先順位規則を使用します。
以下のC言語プリプロセッサディレクティブを使用できます。
ディレクティブ | 説明 |
|---|---|
プリプロセッサシンボルに値を割り当てます。 | |
| |
条件が偽の場合に命令をアセンブルします。 | |
| |
エラーを生成します。 | |
条件が真の場合に命令をアセンブルします。 | |
プリプロセッサシンボルが定義されている場合に命令をアセンブルします。 | |
プリプロセッサシンボルが定義されていない場合に命令をアセンブルします。 | |
ファイルをインクルードします。 | |
標準出力上にメッセージを生成します。 | |
を参照してください。このディレクティブは、認識はされますが、無視されます。 | |
プリプロセッサシンボルの定義を取り消します。 |
アセンブラ言語とC形式のプリプロセッサディレクティブを混在させないでください。これらは概念的に異なる言語です。アセンブラディレクティブはCプリプロセッサ言語の一部として受け入れられない場合があるため、これらを混在させると、予期しない動作の原因となる可能性があります。
注記
プリプロセッサディレクティブは、他のディレクティブの前に処理されます。たとえば、以下のような構文を避けてください。
redef macro ; Avoid the following!
#define \1 \2
endmこれは、\1と\2というマクロ引数は前処理フェーズで使用できないためです。