#undef ディレクティブ (C/C++)#undef directive (C/C++)

#define で作成された名前を削除 (定義解除) します。Removes (undefines) a name previously created with #define.

構文Syntax

#undef 識別子#undef identifier

RemarksRemarks

#Undefディレクティブにより、識別子の現在の定義が削除されます。The #undef directive removes the current definition of identifier. その結果、プリプロセッサでは後続の識別子が無視されます。Consequently, subsequent occurrences of identifier are ignored by the preprocessor. #Undefを使用してマクロ定義を削除するには、パラメーターリストではなく、マクロ識別子だけを指定します。To remove a macro definition using #undef, give only the macro identifier, not a parameter list.

また、以前の定義がない識別子に #undefディレクティブを適用することもできます。You can also apply the #undef directive to an identifier that has no previous definition. これにより、その識別子が未定義であることが保証されます。This ensures that the identifier is undefined. マクロ置換は #undefステートメント内では実行されません。Macro replacement isn't performed within #undef statements.

通常、 #undefディレクティブは、識別子が#define特別な意味を持つソースプログラムで領域を作成するためのディレクティブと組み合わせて使用されます。The #undef directive is typically paired with a #define directive to create a region in a source program in which an identifier has a special meaning. たとえば、ソース プログラムの特定の関数でマニフェスト定数を使用すると、プログラムの残り部分に影響を与えない環境固有の値を定義できます。For example, a specific function of the source program can use manifest constants to define environment-specific values that do not affect the rest of the program. また、 #undefディレクティブは、 #ifディレクティブを使用して、ソースプログラムの条件付きコンパイルを制御します。The #undef directive also works with the #if directive to control conditional compilation of the source program. 詳細については、「 #if、#elif、#else、および #endif ディレクティブ」を参照してください。For more information, see The #if, #elif, #else, and #endif directives.

次の例では、 #undefディレクティブによって、シンボリック定数とマクロの定義が削除されます。In the following example, the #undef directive removes definitions of a symbolic constant and a macro. マクロの識別子のみが指定されていることに注意してください。Note that only the identifier of the macro is given.

#define WIDTH 80
#define ADD( X, Y ) ((X) + (Y))
.
.
.
#undef WIDTH
#undef ADD

Microsoft 固有の仕様Microsoft Specific

マクロは、 /Uオプションを使用してコマンドラインから未定義にすることができます。その後、マクロ名を未定義にすることができます。Macros can be undefined from the command line using the /U option, followed by the macro names to be undefined. このコマンドを発行した場合の効果は、ファイル#undefの先頭にある一連のマクロ名ステートメントと同じです。The effect of issuing this command is equivalent to a sequence of #undef macro-name statements at the beginning of the file.

Microsoft 固有の仕様はここまでEND Microsoft Specific

関連項目See also

プリプロセッサディレクティブPreprocessor directives