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的预编译头过程中形成的信息。

  • 相关阅读:
    如何保证消息不被重复消费?
    接口幂等性实现
    JVM 线上故障排查基本操作
    对于Arraylist 的一些疑问
    递归思想与递归编程
    linux配置javaJDK
    python数据分析-pandas常用方法
    python 数据分析-pandas数据结构
    python数据分析-numpy 矩阵操作
    python数据分析-numpy数组操作
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/12222486.html
Copyright © 2011-2022 走看看