C++预处理器的简单用法

    xiaoxiao2021-03-26  32

    //http://blog.csdn.net/yuayi521/article/details/9709191

    C++中的预处理器

    1、预处理器

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

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

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

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

    2、#include是如何工作的

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

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

    头文件一:

    example_1.h 

    [cpp]  view plain  copy int a;   int b;  

    头文件二:

    example_2.h

    [cpp]  view plain  copy #include"example_1.h"   int c;   int d;  

     

    源文件

    test.cpp

    [html]  view plain  copy #include <example_1.h>   #include<example_2.h>   int main()   {      }  

     

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

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

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

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

    [cpp]  view plain  copy 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之间的代码将全部被忽略。

    一般预处理器用于工程项目中,可用VS等进行。

    转载请注明原文地址: https://ju.6miu.com/read-660226.html

    最新回复(0)