#if条件コンパイル命令行禁止

2213 ワード

条件コンパイルとは、特定の条件に従って、どのソースコードがコンパイルに参加するか、どのソースコードがコンパイルに参加しないかを決定し、1つのソースプログラムが異なるコンパイル条件の下で異なるターゲットプログラムを生成することを意味する.C++は、1つの式またはマクロがコンパイル条件として定義されるかどうかのいくつかの異なる形式の条件コンパイル命令を提供し、主にデバッグが容易なプログラムまたはシフト可能な値のプログラムを設計するために使用される.
条件コンパイル命令はif文構造に似た構造を持つ複数種類あります.条件コンパイル命令は、それぞれ#if、#ifdefまたは#ifndef命令で開始し、中間に#else命令があり、最後に#endif命令で1つのコンパイル命令の終了を表すことができる.次に、条件コンパイル命令でよく使用される3つの形式を示します.
 
#if...[#else]...#endif
#ifdef...[#else]...#endif
#ifndef...[#else]...#endif
#if命令は、その後の式の値が真であるか否かを検出し、真である場合、その後のソースコードは、#elseまたは#endifが出るまでコンパイルに参加する.真でない場合、その後のソースコードはコンパイルに参加しません.ifdef命令は、後続のマクロが定義されているかどうかを検出するif defined命令の略であり、定義されている場合、後続のソースコードがコンパイルに参加する.ifndef命令は、その後のマクロが定義されているかどうかも検出するが、マクロが定義されていない場合にのみ、その後のソースコードがコンパイルに関与する.
 
例使用条件コンパイル命令
 
(1)#if命令の使い方
#include <iostream.h>
#define MAX 100                   //   
void main()
{
	#if MAX > 99                      //    
		cout << "MAX is greater than 99 !" << endl;
	#else
		cout << "MAX is small !" << endl;
	#endif
}

 
プログラムでは、MAX定義の値が99より大きいため、#ifと#else間のソースコードがコンパイルに参加する.プログラムが実行されると、次のように表示されます.
MAX is greater than 99 !
 
(2)#ifdef命令の使い方
#include <iostream.h>
#define DEBUG												//   
int main()
{
	int nDebug=50;
	int nRealse=6;

	#ifdef DEBUG												//    
		cout <<"DEBUG:value of version is " << nDebug << endl;	//   
	#else
		cout <<"RELEASE:value of version is " << nRealse << endl;//   
	#endif

    #ifndef DEBUG												//    
		cout <<"DEBUG:value of version is " << nDebug << endl;	//   
	#else
		cout <<"RELEASE:value of version is " << nRealse << endl;//   
	#endif

	return 1;
}

 
プログラムでは、識別子DEBUGがコンパイル条件として定義されているかどうか.#ifdefコマンドを使用して、どのソースコードをコンパイルするかをDEBUGが定義されているかに基づいて決定します.プログラムが実行されると、次のように表示されます.
DEBUG:value of version is 50RELEASE:value of version is 6