Skip to main content

IAR Embedded Workbench for Arm 9.70.x

C形式のプリプロセッサディレクティブ

このセクションの内容:
構文

#define symbol text

#elif condition

#else

#endif

#error "message"

#if condition

#ifdef symbol

#ifndef symbol

#include {"filename" | <filename>}

#message "message"

#undef symbol

パラメータ

condition

絶対アセンブラ式は式、オペランド、演算子を参照してください。

式に、アセンブララベルまたはシンボルを含めることは一切できず、ゼロ以外の値はすべて真と見なされます。Cプリプロセッサ演算子definedが使用されます。

filename

インクルードされるか参照されるファイルの名前。

message

表示されるテキスト。

symbol

定義、定義取り消し、または テストされるプリプロセッサシンボル。

text

割り当てられる値。

説明

アセンブラには、C89標準にと似たようなC形式のプリプロセッサがあります。

注記

プリプロセッサ式は、アセンブラ演算子と同じ優先順位規則を使用します。

以下のC言語プリプロセッサディレクティブを使用できます。

ディレクティブ

説明

#define

プリプロセッサシンボルに値を割り当てます。

#elif

#if...#endifブロックに新しい条件を導入します。

#else

条件が偽の場合に命令をアセンブルします。

#endif

#if#ifdef、または#ifndefブロックを終了させます。

#error

エラーを生成します。

#if

条件が真の場合に命令をアセンブルします。

#ifdef

プリプロセッサシンボルが定義されている場合に命令をアセンブルします。

#ifndef

プリプロセッサシンボルが定義されていない場合に命令をアセンブルします。

#include

ファイルをインクルードします。

#message

標準出力上にメッセージを生成します。

#pragma

を参照してください。このディレクティブは、認識はされますが、無視されます。

#undef

プリプロセッサシンボルの定義を取り消します。

表153 C形式のプリプロセッサディレクティブ  


アセンブラ言語とC形式のプリプロセッサディレクティブを混在させないでください。これらは概念的に異なる言語です。アセンブラディレクティブはCプリプロセッサ言語の一部として受け入れられない場合があるため、これらを混在させると、予期しない動作の原因となる可能性があります。

注記

プリプロセッサディレクティブは、他のディレクティブの前に処理されます。たとえば、以下のような構文を避けてください。

redef       macro                   ; Avoid the following!
#define \1 \2
            endm

これは、\1\2というマクロ引数は前処理フェーズで使用できないためです。