//注意:预处理不是C++语言的组成部分。 预处理功能包括:(1)宏定义 (2)文件包含 (3)条件编译
先说文件包含:
//2 (2)文件包含
#include <iostream>
// #include "iostream"
//这种常用在文件头部的被包含的文件称为 “头文件”
头文件一般包含以下几类内容:
(1) 对类型的声明。
(2) 函数声明。
(3) 内置(inline)函数的定义。
(4) 宏定义。用#define定义的符号常量和用const声明的常变量。
(5) 全局变量定义。
(6) 外部变量声明。如entern int a;
(7) 还可以根据需要包含其他头文件。
这些内容,只要有一个 “声明” 的概念就可以了,与声明(.h 文件)相对应的是 实现,一般是 .cpp 文件。
//1.1 (1)宏定义
#define a 10 a 只是用一个符号代替 10,在预编译时把所有符号常量替换为所指定的字符串,存粹是替换
//1.2 带参数的宏
#define S(a,b) a*b
//由于C++增加了内置函数(inline), 因此基本上已不再用#define命令定义带参数的宏了,主要用于条件编译中。
这种替换很容易就能想到,比如 S(1,2) 会被替换为 1*2
(3)条件编译 直接看程序demo
#define RUN
using namespace std;
int main(int argc,constchar * argv[]) {
#ifndef RUN //理解: if there is no definition of RUN,then:实际编译这段话
cout<<S(10,23)<<endl;
#else //理解:else:否则,编译下面这段话
cout<<"123"<<endl;
#endif //结束 if
// 与普通的 if else 语句不同的是,条件编译相当于,把代码删去了
cout<<"What the fuck"<<endl;
//可以通过表达式判断是否编译,像普通的 if
#if 1
cout<<123;
#else
cout<<321;
#endif
cout<<234;
// #else 语句可以没有
}