C/C+:前処理命令


C/C+:前処理命令
ラベル:C/C++前処理指令
byウェイちゃん
今日は前処理命令を簡単にまとめます.周知のように、前処理命令は、マクロ定義と条件コンパイルを含むファイルに使用することができる.ファイルに含まれるキーワードは、#includeマクロ定義のキーワードは、#define条件コンパイルのキーワードは、#if#ifdef#ifndef#else#endifです.
書類に含まれていることについては、あまり説明する必要はないと思います.皆さんがよく知っていると信じています.
マクロ定義、すなわちdefineには、主に2つの使い方があります.1つ目は、シンボル定数、すなわちマクロです.2つ目は、パラメータ付きマクロです.シンボル定数:
#define PI 3.14159

パラメータ付きマクロ:
# include <iostream>
#define MIN(a,b) ((a < b) ? a : b)

using namespace std;

int main(void) {
    int i = 10;
    int j = 12;
    cout << "The mixest one is :" << MIN(i,j) << endl;
    return 0;
}

ここで、私が重点的に強調したいのは条件コンパイルです.前述したように、条件コンパイルのキーワードは、#if#else#ifdef#ifndef#endifです.では、このいくつかのキーワードはどんな役割を果たしていますか.どんな違いがありますか.実は、条件コンパイルの大きな役割はdebugに使用され、条件コンパイルをコードデバッグのスイッチとして使用することです.
# if   
      
# endif

この条件を満たすと、ソースファイルに対応する場所にコードを挿入します.
# ifdef     
      
# endif

# ifndef     
      
# endif

ifdefは、前に定義文字定数があれば実行コードが同じであることを示し、ifndefは、前に定義文字定数がなければ実行コードを示す
次に例を示します.
# include <iostream>

# define SWIFT 1
# define DEBUG

using namespace std;

int main(void) {
    cout << "Hello, world!" << endl;
    #ifdef DEBUG
        cout << "You are using #ifdef" << endl;
        cout << "The program has found the key 'DEBUG'" << endl;
    #endif
    #ifndef DEBUG
        cout << "You are using #ifndef" << endl;
        cout << "The program has not found the key 'DEBUG'" << endl;
    #endif
    #if SWIFT
        cout << "You are using #if" << endl;
    #endif
    return 0;
}

    :
Hello, world!
You are using #ifdef
The program has found the key 'DEBUG'
You are using #if

SWIFTの数字を0に変更すると、このコードはコンパイルされず、デバッグに適用できます.デバッグのスイッチとして!もし私が#define DEBUGという文を削除したら、#ifndefの内容が実行されます.
要するに、条件コンパイルはコードデバッグに適用するのは非常に便利で、重複追加、削除の面倒を省くことができます!
以上の内容はすべて本人の観点のために、みんなが批判と指導を提出することを歓迎して、私达はいっしょに検討します!