【C++中预处理语句include、define、if】-创新互联

1.预处理阶段

一般执行过程
预处理阶段,在实际发生编译之前就根据对应的预处理语句进行操作,等到预处理阶段完成之后才进行编译阶段 。

10年积累的成都做网站、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有常山免费网站建设让你可以放心的选择与我们合作。2.预处理语句

预处理语句主要有include、define、if 和 program。利用 # 进行标记

2.1 include语句

include语句就是将所包含的文件给复制到当前文件中.

//Math1.h
}

//math11.cpp
int sum_(int a, int b) {return a + b;
#include"Math1.h"  //等价于 }

上诉代码中,利用include进行预处理,直接将"Math1.h"中的内容直接赋值过来。后面编译器编译math11.cpp实际上的内部执行内容是

#line 1 "C:\\dev\\cppstudy\\hello\\hello\\math11.cpp"
int sum_(int a, int b) {return a + b;
#line 1 "C:\\dev\\cppstudy\\hello\\hello\\Math1.h"
}
#line 4 "C:\\dev\\cppstudy\\hello\\hello\\math11.cpp"

也就是

int sum_(int a, int b) {return a + b;
}
2.2 define语句

define语句底层实现就是一个简单的字符串替换,就是将指定的字符串替换成为目标字符串,然后再进行编译

//math22.cpp
#define INTEGER int
INTEGER sum_(INTEGER a, INTEGER b) {return a + b;
}

实际上,在预处理阶段,将字符串 INTEGER 替换成 int,然后再对文件进行编译,编译的实质内容是:

int sum_(int a, int b) {return a + b;
}

通过运行下面这个例子,可以帮助你更好理解

#include#define SUM(a,b) a+b
using namespace std;
int main(){int a=2,b=3;
	int c=a*SUM(a,b)*b;//直接替换 c=a*a+b*b
	cout<
2.3 if语句

​ if处理语句可以帮助我们包含或者排除基于条件的代码。

#if 1
int sum_(int a, int b) {return a + b;
}
#endif

因为条件为 1,所以编译器会编译 #if 与 #endif 直接的语句,编译的实质内容是:

int sum_(int a, int b) {return a + b;
}

如果if条件为0 则不会编译其中的内容

2.4 progra语句

所有 预处理 其中, #pragma 应该最复杂了。
它的作用是设定 编译器 的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。这里就不进行过多的介绍。有兴趣的可以自己了解。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:【C++中预处理语句include、define、if】-创新互联
网址分享:http://cdiso.cn/article/ecdss.html