C++ 预处理器的简单介绍

C++中的预处理器

1、预处理器

      预处理器是C++程序编译的一部分;

      预处理器处理程序的源码,在编译器之前运行;

      预处理器是C++继承C语言的,但是C++的大量特征减少了预处理器的使用;

      C++预处理器的一个重要的用法:#include<头文件>,将头文件并入程序。

2、#include是如何工作的

      #include是C++预处理器的一部分,预处理器用指定的头文件内容代替每个#include。

3、头文件经常包含其他头文件,源文件会多次包含同一个头文件。

头文件一:

example_1.h 

int a;
int b;

头文件二:

example_2.h

#include"example_1.h"
int c;
int d;

 

源文件

test.cpp

#include <example_1.h>
#include<example_2.h>
int main()
{

}

 

在设计头文件时,应该可以使头文件多次包含在一个源文件中,但是程序员必须保证的是,多次包含同一头文件不会引起该文件定义的类和对象被多次定义,从上面的例子来看,显然会在example_2.h头文件中对a和b进行一次定义,在test.cpp源文件中对a和b在进行一次定义。这样会产生什么后果呢?

4、针对上面出现的问题,头文件在源文件中被多次包含,引起了对头文件中定义的类和对象多次定义的现象,可以使用预处理器变量来解决。

#define指示接受一个名字并定义该变量为预处理器变量

#ifndef指示检测指定的预处理器变量是否定义。
上面的第一个头文件可以改为:

example_1.h 
#ifndef EXAMPLE1
#define EXAMPLE!
int a;
int b;
#endif

这样,编译器在编译的时候,会先编译example_2.h头文件,发现没有定义EXAMPLE1预处理器变量,于是定义该变量,并定义int a,int b。

编译器继续编译test.cpp源文件是,发现已经定义EXAMPLE1预处理器变量,#ifndef指示为假,该指示和#endif之间的代码将全部被忽略。


 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值