我是靠谱客的博主 执着柜子,最近开发中收集的这篇文章主要介绍【C++中预处理语句 include、define、if】1.预处理阶段2.预处理语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.预处理阶段

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

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<iostream>
#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<<c;//13 并不是30
}

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++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。这里就不进行过多的介绍。有兴趣的可以自己了解。

最后

以上就是执着柜子为你收集整理的【C++中预处理语句 include、define、if】1.预处理阶段2.预处理语句的全部内容,希望文章能够帮你解决【C++中预处理语句 include、define、if】1.预处理阶段2.预处理语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部