zoukankan      html  css  js  c++  java
  • c++预编译头文件

    1,预编译头文件是个啥?

    根本上来说,他是个头文件和cpp文件的合体,cpp文件中的内容是宏定义和:include ”xxx.h"

    2,为啥要用预编译头文件?

    c++头文件是不编译的,只是用来做声明用,按照cpp来编译,所有的cpp都分别一个一个编译好以后再链接起来,include进来的头文件做了什么呢?比如,include <windows.h>,它就是把windows.h里所有的代码都include到cpp上include所在的位置,然后整个cpp进行编译,假设项目中只有一个cpp问题不大,但是如果有十几个cpp,都需要window.h,那么window.h内的代码需要复制粘贴编译十几遍,会导致项目编译慢,但是如果,把几个常用的头文件单独放在一个头文件中,先把它编译好了,再去不同的cpp中编译其他的部分,这样编译速度就快了。

    常见的预编译头文件:“stdafx.h”,“pch.h”

    3,预编译头文件怎么用?

    a,首先你要知道你的项目中每个cpp都会include的头,比如,我项目中,每个cpp都用到了window.h和opencv.h,这样我把这俩h文件抽出来,单独建立一个h文件,内容大约是这样的

    pch.h

    #ifndef PCH
    #define PCH
    
    #include<window.h>
    #include<opencv/opencv.h>
    
    #endif //PCH

    然后我还要建立一个cpp,cpp里啥都不放,就这样

    pch.cpp

    #include "pch.h"

    这样单独把pch.cpp编译成一个包,其他的包如果需要头文件就直接链过来就行了,而不是每次都自己编一遍。

    b,如果是使用vs开发,还需要在项目属性--c++--预编译头中先创建,再使用一次预编译头文件,如果是ubuntu开发,g++也支持这个功能,目前没详细研究。自行搜索吧。

    可参考:感谢原作者

    4,练习创建预编译头文件

    1,首先创建一个空项目,项目内添加头文件pch.h,源文件pch.cpp,main.cpp,像这样:

    pch.h的内容:

    #pragma once
    #ifndef PCH    //宏定义,防止重复引用
    #define PCH
    
    #include<iostream>
    #endif

    pch.cpp的内容,注意,#include "pch.h"必须放在第一个引用,而且所有的cpp必须都引用:

    #include"pch.h"

    2,点击vs上的:项目--属性--预编译头--选择创建预编译头--输入pch.h,像下图这样

    选择:生成--生成重新生成解决方案

    3,刚刚只是生成了一下.pch的预编译文件,接下来,是使用生成的pch预编译头文件。

    右击源文件pch.cpp---属性----预编译头文件---选择创建

    右击源文件main.cpp---属性----预编译头文件----选择使用

    vs菜单栏的设置,此设置应用于整个项目:项目---属性---预编译头文件---选择使用,然后点击高级----强制包含文件----输入pch.h

    点击生成--生成解决方案,就可以跑起来代码了。

    注意,除了整个项目,不同的cpp文件也有预编译头属性,除了pch.cpp的预编译头属性为创建,其他的都是使用。别错了哦。不然会报错:无法覆盖在创建对象文件*.obj的预编译头过程中形成的信息。

  • 相关阅读:
    P1144 最短路计数 题解 最短路应用题
    C++高精度加减乘除模板
    HDU3746 Teacher YYF 题解 KMP算法
    POJ3080 Blue Jeans 题解 KMP算法
    POJ2185 Milking Grid 题解 KMP算法
    POJ2752 Seek the Name, Seek the Fame 题解 KMP算法
    POJ2406 Power Strings 题解 KMP算法
    HDU2087 剪花布条 题解 KMP算法
    eclipse创建maven项目(详细)
    maven的作用及优势
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/12222486.html
Copyright © 2011-2022 走看看