一、宏#

宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等

1. 宏变量#

宏变量和const 修饰的在定义语义上没有什么不同,都是可以用来定义常量,但在与const的定义进行对比时,没有任何优势可言,所以建议使用const来定义常量。

1
2
3
4
5
6
7
#define MAX 30

int main(){
    int scores[MAX]; //表示一个班30个人的成绩数组。

    return 0 ;
}

2. 条件宏#

条件宏最常出现在头文件中,用于防止头文件被反复包含。

  • 头文件的条件宏
1
2
3
4
5
#ifndef STUDENT_H
#define STUDENT_H
……
……
#endif
  • 用于判断编译的条件宏

通过DEBUG宏,我们可以在代码调试的过程中输出辅助调试的信息。当DEBUG宏被删除时,这些输出的语句就不会被编译。更重要的是,这个宏可以通过编译参数来定义。因此通过改变编译参数,就可以方便的添加和取消这个宏的定义,从而改变代码条件编译的结果.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#define DEBUG
#define REALEASE

#include<iostream>

using namespace std;

int main() {
    #ifdef DEBUG
        cout <<"debug模式下打印" << endl;
    #elif REALEASE
        cout <<"release模式下打印" << endl;
    #else
        cout <<"普通模式下打印" << endl;
    #endif

    //下面可言继续编写原有的逻辑
    cout << "继续执行逻辑代码~~~"<<endl;

    return 0 ;
}