C++プリプロセッサの簡単な紹介
C++のプリプロセッサ
1、プリプロセッサ
プリプロセッサはC++プログラムコンパイルの一部である.
プリプロセッサプロセッサプロセッサのソースコードは、コンパイラの前に実行されます.
プリプロセッサはC++がC言語を継承するが、C++の多くの特徴はプリプロセッサの使用を減らす.
C++プリプロセッサの重要な使い方:#include、ヘッダファイルをプログラムに組み込む.
2、#includeがどのように機能するか
#includeはC++プリプロセッサの一部であり、プリプロセッサは各#includeの代わりに指定されたヘッダファイルの内容を使用する.
3、ヘッダファイルには常に他のヘッダファイルが含まれており、ソースファイルには同じヘッダファイルが複数回含まれています.
ヘッダファイル1:
example_1.h
ヘッダファイル2:
example_2.h
ソースファイル
test.cpp
ヘッダファイルを設計する際には、ヘッダファイルを1つのソースファイルに複数回含めることができるはずですが、プログラマは、同じヘッダファイルを複数回含むと、そのファイル定義を引き起こすクラスやオブジェクトが複数回定義されないことを保証する必要があります.上記の例から、example_2.hヘッダファイルでは、testでaとbを一度定義.cppソースファイルではaとbを一度に定義します.これでどうなるのでしょうか.
4、上記の問題に対して、ヘッダファイルはソースファイルに複数回含まれ、ヘッダファイルに定義されたクラスとオブジェクトを複数回定義する現象を引き起こし、プリプロセッサ変数を使用して解決することができる.
#defineは、名前を受け入れ、プリプロセッサ変数として定義することを示します.
#ifndefは、指定したプリプロセッサ変数が定義されているかどうかを検出することを示す.上の最初のヘッダファイルは、次のように変更できます.
これにより、コンパイラはコンパイル時にexample_を先にコンパイルします.2.hヘッダファイルでEXAMPLE 1プリプロセッサ変数が定義されていないことを発見し、その変数を定義し、int a,int bを定義する.
コンパイラはtestのコンパイルを続行します.cppソースファイルは、EXAMPLE 1プリプロセッサ変数が定義されていることを発見し、#ifndefは偽であり、この指示と#endifとの間のコードはすべて無視されます.
1、プリプロセッサ
プリプロセッサはC++プログラムコンパイルの一部である.
プリプロセッサプロセッサプロセッサのソースコードは、コンパイラの前に実行されます.
プリプロセッサはC++がC言語を継承するが、C++の多くの特徴はプリプロセッサの使用を減らす.
C++プリプロセッサの重要な使い方:#include、ヘッダファイルをプログラムに組み込む.
2、#includeがどのように機能するか
#includeはC++プリプロセッサの一部であり、プリプロセッサは各#includeの代わりに指定されたヘッダファイルの内容を使用する.
3、ヘッダファイルには常に他のヘッダファイルが含まれており、ソースファイルには同じヘッダファイルが複数回含まれています.
ヘッダファイル1:
example_1.h
int a;
int b;
ヘッダファイル2:
example_2.h
#include"example_1.h"
int c;
int d;
ソースファイル
test.cpp
#include
#include
int main()
{
}
ヘッダファイルを設計する際には、ヘッダファイルを1つのソースファイルに複数回含めることができるはずですが、プログラマは、同じヘッダファイルを複数回含むと、そのファイル定義を引き起こすクラスやオブジェクトが複数回定義されないことを保証する必要があります.上記の例から、example_2.hヘッダファイルでは、testでaとbを一度定義.cppソースファイルではaとbを一度に定義します.これでどうなるのでしょうか.
4、上記の問題に対して、ヘッダファイルはソースファイルに複数回含まれ、ヘッダファイルに定義されたクラスとオブジェクトを複数回定義する現象を引き起こし、プリプロセッサ変数を使用して解決することができる.
#defineは、名前を受け入れ、プリプロセッサ変数として定義することを示します.
#ifndefは、指定したプリプロセッサ変数が定義されているかどうかを検出することを示す.上の最初のヘッダファイルは、次のように変更できます.
example_1.h
#ifndef EXAMPLE1
#define EXAMPLE!
int a;
int b;
#endif
これにより、コンパイラはコンパイル時にexample_を先にコンパイルします.2.hヘッダファイルでEXAMPLE 1プリプロセッサ変数が定義されていないことを発見し、その変数を定義し、int a,int bを定義する.
コンパイラはtestのコンパイルを続行します.cppソースファイルは、EXAMPLE 1プリプロセッサ変数が定義されていることを発見し、#ifndefは偽であり、この指示と#endifとの間のコードはすべて無視されます.