精华内容
下载资源
问答
  • 预编译资料 经典预编译资料经典预编译资料经典预编译资料经典预编译资料
  • 什么是预编译? a,预编译就是在编译代码之前的一些先前的处理工作 b,处理一些以"#"开头的指令  #inlcude "头文件"  #define 宏定义  条件编译等 预编译指令就是在正式编译之前由...

    什么是预编译?

    a,预编译就是在编译代码之前的一些先前的处理工作

    b,处理一些以"#"开头的指令

          #inlcude "头文件"

          #define 宏定义

          条件编译等

    预编译指令就是在正式编译之前由编译器编译一把的内容,可以放在程序的任何位置

    C编译系统会在对程序进行统一的编译之前,会对预编译指令进行预处理

    何时需要用到预编译?

    a,总是经常使用不会改动或者不会进行大型改动的代码段

    b,程序由多个模块组成,而且每一个模块都会使用到相同的头文件或者预编译的指令

    这个时候我们就需要预编译技术,靠这个技术来生成预编译头。

    什么是预编译头?

    在实际的开发中,几乎好多的cpp文件都会包含一大堆相同的头文件,在编译器进行编译的时候,都会将这些头文件进行展开,然后进行编译,但是每一个cpp文件包含一遍就是展开编译一遍,所以当我们包含的头文件太大的时候,编译的速度就会贼吉尔慢,这个时候就需要预编译开生成预编译头,一次编译,全体通用。

    当我们使用预编译技术之后,会在对应工程的Debug或者Release文件夹中找到一个:***.pch的文件(通常是这个后缀,至少我在windows上面的时候就是这个后缀),这个文件就是我们使用预编译生成的预编译头文件。

    采用预编译之后,生成的预编译头文件就可以让每一个cpp文件进行使用,且不会像普通的头文件那样展开然后重新编译,预编译头文件是提前编译好然后加载到内存中去的。

    但是随之而来的就会有有个问题:因为预编译的前提就是默认你的每一个cpp文件都会使用,所以当编译器发现你的cpp文件没有使用预编译头的时候,就会出现编译错误。因为编译器不知道怎么将已经编译好的东西从内存中挪出去,就会出现错误,此时只能将所有的cpp文件都使用预编译头。

    作为生成预编译头的文件,应该有的特点就是:稳定,不会进行大的更改,甚至不会进行更改,因为编译一次预编译头文件的时间还是挺长的,生成的预编译头文件也挺大的,当包含的头文件有进行更改的时候,就需要重新编译生成一遍.pch文件。

    这个时候也许有人就会问,现在的编译器不都是有时间戳的功能吗,每一次编译只去编译被修改的文件,对于没有被修改的文件,则保持之前的编译结果,但是如果被修改的文件里面使用的头文件很大,那么当我们只在cpp文件中修改一丢丢代码,编译器还是会全部重新编译,这样效率还是很低,所以就这个时候预编译即体现出了他的作用,预编译就是来处理这一部分信息。

    怎么是使用预编译?

    大家在windows编程的时候,在vs或者vc中见到名字叫:Stdafx.h的文件,好多人都会觉得这个一个系统级的头文件,其实他就是预编译文件,他可以换成任何的我们想要的名字。

    使用预编译文件的的操作步骤如下:

    1)添加一个头文件,名字随便起,这里我们借一下vc的名:Stdafx.h,这个头文件里面一般就是包含我们要使用的头文件,比如第三方库之类的,或者自己写的头文件

    2)添加一个Stdafx.cpp文件,这个文件里面包含Stdafx.h文件

    3)项目属性----->c/c++----->预编译头----->预编译头选项:“使用”,英文版的是:Use Precompiled Header, stdafx.h

    3)Stdafx.cpp文件----->C/C++----->预编译头----->预编译头:“创建”,英文版的是:Create Precompiled Header, stdafx.h

    结束。

    一定要包含预编译头文件,然后运行工程。

    然后在工程文件里面就可以生成.pch文件

    参考资料:

    https://blog.csdn.net/rl529014/article/details/51613941

    https://blog.csdn.net/lovemysea/article/details/74858430

    展开全文
  • 预编译文件,预编译头文件认识

    千次阅读 2019-05-12 20:57:43
    1、预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的信息进行编译。 2、预编译...

     一、概念:
    1、预编译:就是编译器首先编译某个文件(称为预编译头文件),然后将这个编译结果保存起来,之后如果有其他源文件include了这个“预编译头文件”的时候,则自动从这个编译结果提取需要的信息进行编译。
    2、预编译结果文件(Precompiled header file):就是那个用来保存已经编译了的符号信息的文件(.PCH作为后缀)
    3、生成预编译结果文件(Create Precompiled header file):我们说源文件A通过文件B“生成预编译结果文件”是指编译A的时候将其中编译B的编译结果保存成预编译结果文件。一般使用向导的话,A文件就是“stdafx.cpp”,B文件是“stdafx.h”。stdafx.cpp中就一行语句:
    #include “stdafx.h”
    4、使用预编译头(Using precompiled header):我们说某个源文件(a.cpp)通过“stdafx.h”来使用预编译结果是指编译a.cpp的时候,如果a.cpp第一行include语句是#include “stdafx.h”的话,那么直接取预编译结果文件的结果,不再重新编译”stdafx.h”
    二、向导是怎么做的?
    1、设置“stdafx.cpp”的预编译选项是通过“stdafx.h”文件来“生成预编译结果文件”。
    2、其他源文件的预编译选项设置是通过“stdafx.h”来“使用预编译头”

    三、使用原则?
    1、将相对稳定的头文件(比如CRT,STL,第三方固定的库)全部写在stdafx.h中。(是否使用stdafx.h依赖个人喜好,不过使用stdafx.h可以和向导保持一致)
    2、全部源文件第一行都加#include “stdafx.h”。
    3、一些不能修改的源文件(如果公共的代码,不具备权限修改的代码),设置他的预编译选项是“不使用预编译头”。注意,一定不能是选择“自动生成预编译头”,因为这样会将stdafx.h的结果冲掉(这个不知道是BUG还是设计的问题了,.^_^。)。
    四、Q&A
    Q、为什么不全部使用“自动生成预编译头文件”?
    A、“自动生成预编译头文件”和什么都不用没有什么两样,编译速度没有质的提高。

    Q、手工添加一个新的源文件到项目的时候,经常出现类似错误:
    fatal error C1010: unexpected end of file while looking for precompiled header directive
    A、因为向导缺省的设置是“使用预编译头”,但是你新加的文件并没有在第一行包含“stdafx.h”。解决的方法要么修改成“不使用预编译头”,要么添加一行#include “stdafx.h”

    Q、加stdafx.h和stdafx.cpp总觉得是和编译平台绑定了,不具备移植性?
    A、其实,注意一下stdafx.h的写法就没有问题了。我的解决方案是

    (stdafx.h的内容):
    –begin of file stdafx.h
    #ifdef _WIN32
    #include “win.h”    // 泛指window下的公共头文件
    #else
    #include “linux.h”    // 泛指linux下的公共头文件
    #endif

    #include “crt.h”      //泛指c标准库
    #include “stl.h”      //泛指STL库
    –end of file

    或者更加简单一点,如果不是VC编译器,那么stdafx.h就什么内容都不写!

    转载:https://www.cnblogs.com/icmzn/p/5087537.html

    展开全文
  • linux C++ 预编译

    2020-07-11 14:37:07
    linux C++ 预编译 cmake样例
  • 课程内容:(1)回顾c预编译(2)宏定义:无宏体宏、有宏体宏、带参宏、宏定义与复杂表达式。(3)条件编译:#if、#else、#elif #endif、#ifdef和#ifndef、#if与defined、条件编译与配置文件(4)一些特殊的预编译...
  • JavaScript 预编译原理 今天用了大量时间复习了作用域、预编译等等知识 看了很多博文,翻开了以前看过的书(好像好多书都不会讲预编译) 发现当初觉得自己学的很明白,其实还是存在一些思维误区 (很多博文具有...
  • MySQL预编译功能详解

    2020-12-16 10:25:19
    本文为大家分享了MySQL预编译功能,供大家参考,具体内容如下 1、预编译的好处  大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能。什么是预编译功能呢?它有什么好处呢?  当客户发送一条SQL语句...
  • mybatis中预编译sql与非预编译sql

    千次阅读 2019-10-02 02:18:15
    预编译sql有缓存作用,非预编译没得 mybaits中带有#传参的有预编译左右,$没得 多用#传参 预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止sql注入。 ...

    预编译sql有缓存作用,非预编译没得

     

    mybaits中带有#传参的有预编译左右,$没得

     

    多用#传参

     

    预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止sql注入。

     

     

    https://www.cnblogs.com/Prozhu/p/5541916.html

    转载于:https://www.cnblogs.com/huzi007/p/9071154.html

    展开全文
  • 什么是预编译?何时需要预编译

    千次阅读 2020-02-13 16:34:47
    预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。 何时需要预编译: 总是使用不经常改动...

    预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。
    何时需要预编译:

    1. 总是使用不经常改动的大型代码体。
    2. 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

     

    展开全文
  • 预编译详细资料,共90页。 掌握宏定义的使用方法;  掌握文件包含的使用方法;  了解条件编译的使用方法。 §7.1 概 述 C语言的编译系统分为编译预处理和正式编译,这是C 语言的一大特点,其中...
  • 大家都知道JavaScript是解释型语言,既然是解释型语言,就是编译一行,执行一行,那又何来预编译一说呢?脚本执行js引擎都做了什么呢?今天我们就来看看吧。 1-JavaScript运行三部曲 语法分析 预编译 解释执行 语法...
  • 编译原理上机实验报告 预处理 预编译 字符串搜索
  • Sql预编译

    2019-07-06 10:47:18
    在实际开发中,对数据库的基本操作就是curd,每次执行sql都有经过编译过程,那么就需要消耗大量的时间,因此就有了预编译的过程,预编译可以想象成将sql变成一个函数,在需要的时候传参进行即可使用。这样就能达到一...
  • 实现方式 :1. 注入em: @PersistenceContext private EntityManager entityManager;2. 得到em: private EntityManager getEm() { return this.entityManager;...预编译实现: EntityManager em = getEm(); Stri...
  • 预编译出错

    2014-08-27 13:50:20
    VS90SP1-KB976656-x86 解决 fatal error C1853 预编译头 的补丁包,适用于VS2008
  • 为什么预编译头文件:预编译头的概念: 所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++...
  • 介绍c语言中条件编译相关的预编译指令
  • 介绍预编译

    2013-04-24 17:58:11
    介绍预编译的定义和一些例子  #ifdef 语句1  程序2  #endif
  • JAVA预编译示例代码

    2013-08-21 14:30:39
    JAVA预编译示例代码,包括1预编译中使用like 2javaSQL预编译异常 3预编译语句支持in方式 4在预编译中遇到的问题.有了这个文档,java预编译就不用再发愁了。
  • 什么是预编译

    2013-12-20 14:28:17
    什么是预编译?对预编译的解释。对新手学习编程语言的一些基础帮助。
  • MySQL预编译功能

    2017-04-07 12:49:58
    MySQL预编译功能
  • 通过Unity预编译文件smcs.rsp文件添加预编译命令
  • 预编译命令大全

    2012-11-29 12:46:43
    预编译命令大全; 讲述C语言各种预编译命令,详解,非常有用。
  • c++ 预编译

    千次阅读 2017-03-27 16:57:27
    预编译是c++编译的最初部分,它的工作是在编译之前对程序内容进行最有的取舍处理,使得一些语句参加编译,而另一些语句不参加编译。常用的预编译指令是: 1、包含指令:#include 2、条件指令:#if、#elif、#else、#...
  • C_C++预编译

    2017-03-08 14:23:00
    预编译,程序开发,程序优化

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 345,317
精华内容 138,126
关键字:

预编译