Visual C++中 #include stdafx.h 头文件的用法

今天在做VC++实验时,总是出现莫名其妙的错误。比如说:

unexpected end of file whilelooking for precompiled header directive

   再比如说这么一大串:

mainframe.cpp 有错误\firstdlg.h(21) :error C2065: 'IDD_DIALOG_FIRST' : undeclared identifier
mainframe.cpp 有错误\firstdlg.h(21) : error C2057: expected constantexpression
mainframe.cpp 有错误\seconddlg.h(21) : error C2065:'IDD_DIALOG_SECOND' : undeclared identifier
mainframe.cpp 有错误\seconddlg.h(21) : error C2057: expected constantexpression
MainFrame.cpp 有错误\MainFrm.cpp(25) : error C2065: 'ID_TEST_DLG' :undeclared identifier
MainFrame.cpp 有错误\MainFrm.cpp(26) : error C2065: 'ID_TEST_DLG1' :undeclared identifier
MainFrame.cpp 有错误\MainFrm.cpp(58) : error C2065: 'IDR_MAINFRAME' :undeclared identifier

  研究了好久,终于发现了错误原因,原来全都是#include "stdafx.h" 搞的鬼。

   #include"stdafx.h" 必须是所有的CPP实现文件第一条语句,由系统自动生成。

   stdafx.h(Standard Application Framework Extensions ): 标准系统包含文件的包含文件。
   Microsoft C 和 C++编译器提供了用于预编译任何 C 或 C++代码(包括内联代码)的选项。利用此性能特性,可以编译稳定的代码体,将已编译状态的代码存储在文件中,以及在随后的编译中,将预编译的代码与仍在开发的代码结合起来。由于不需要重新编译稳定代码,因此后面每次编译的速度都要快一些。
  预编译代码有助于在开发周期中缩短编译时间,特别是在以下情况中:
   一:总是使用不经常改动的大型代码体。
  二:程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
   三:用于创建预编译头文件的第一次编译所花费的时间比后面的编译稍长一些。通过包含预编译代码可以加快后面的编译速度。C 和 C++程序都可以预编译。在 C++编程中,常见的做法是将类接口信息分别放到不同的头文件中。此后就可以将这些头文件包含在使用该类的程序中。通过预编译这些头文件,可以缩短程序的编译时间。
  VC创建项目时自动创建的预编译头文件,在编译其他文件之前,VC先预编译此文件。头文件stdafx.h引入了项目中需要的一些通用的头文件,比如window.h等,在自己的头文件中包括stdafx.h就包含了那些通用的头文件。
  所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
  预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
  编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include"stdafx.h"前的代码都是预编译的,它跳过#include "stdafx.h"指令,使用projectname.pch编译这条指令之后的所有代码。
   因此,所有的CPP实现文件第一条语句都是:#include"stdafx.h"。

   #include"stdafx.h"如果不小心删了,就会有第一种错误;

   #include"stdafx.h" 如果没有在第一句,就会出现第二种错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac显示无法连接adobe服务器,Mac安装Adobe软件,如遇Error提示解决方法

Mac10.15.3 安装Adobe Photoshop 2020的时候一直提示Error错误The installation cannot continue as the installer file may be damaged. Download the installer file again.看到这种问题,一般第一想法就是安装包损坏了,本能的会再下载一遍甚至多遍&am…

android开发中EditText自动获取焦点时隐藏hint的代码

只需让EditText设置以下的OnFocusChangeListener就可以了 private OnFocusChangeListener mOnFocusChangeListener new OnFocusChangeListener() {Overridepublic void onFocusChange(View v, boolean hasFocus){EditText textView (EditText)v;String hint;if (hasFocus) {h…

Grovvy初识

1.Groovy和Java对比 Groovy的松散的语法允许省略分号和修饰符除非另行指定,Grovvy的所有内容都为publicGrovvy允许定义简单脚本,同时无需定义正规的class对象Grovvy在普通的常用java对象上增加了一些独特的方法和快捷方式,使得他们更容易使用…

C和C++混合编程(__cplusplus使用)

第一种理解 比如说你用C开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的 函数名。 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: …

$.ajax 同步一不,ajax 同步不生效

可以用的生效代码注意 boolean 的位置var baseUrl ${pageContext.request.contextPath };function formcheck(){var flag false;var customerNameaa;var countryaa;var citybeijing;$.ajax({type: POST,url:baseUrl "/exports/credit/findBuyersBySerach",data:{&…

iOS工程中创建pch文件

1.新建pch类文件 2.在工程配置中,Build Setting 下搜索"pre"寻找Apple LLVM6.1 - Language下的 Preflx Header 3.点开Preflx Header 把左边pch类拖拽进去 4.把/"工程名"/....前边的内容全部换为$(SRCROOT) (具体替换内容看报错自己灵活运用)转载于:https:/…

批处理中setlocal enabledelayedexpansion的作用详细整理

设置本地为延迟扩展。其实也就是:延迟变量,全称延迟环境变量扩展, 想进阶,变量延迟是必过的一关!所以这一部分希望你能认真看。 为了更好的说明问题,我们先引入一个例子。 例1: echo off set a4 set a5&echo…

一个服务器多个网站多个域名,多个域名一个服务器吗

多个域名一个服务器吗 内容精选换一换PAS(Primary Application Server):主应用服务器。AAS(Additional Application Server):扩展应用服务器。ASCS(ABAP Central Services):SAP应用核心服务,是SAP应用的一个核心控件,包…

iframe 子父窗口互掉 js

一、父窗口调用iframe子窗口方法 1、HTML语法&#xff1a;<iframe name"myFrame" src"child.html"></iframe> 2、父窗口调用子窗口&#xff1a;myFrame.window.functionName(); 3、子窗品调用父窗口&#xff1a;parent.functionName(); 简单地…

yii2 ajax分页,Yii框架分页技术实例分析

本文实例讲述了Yii框架分页技术。分享给大家供大家参考&#xff0c;具体如下&#xff1a;直接上代码&#xff1a;1.首先写控制器层先引用pagination类use yii\data\Pagination;写自己的方法:function actionFenye(){$data Field::find(); //Field为model层,在控制器刚开始use了…

Spring源码解析——如何阅读源码

阅读目录 下面看一下如何使用jar包以及源码的source包  下面给出一个简单的spring样例  如何阅读源码最近没什么实质性的工作&#xff0c;正好有点时间&#xff0c;就想学学别人的代码。也看过一点源码&#xff0c;算是有了点阅读的经验&#xff0c;于是下定决心看下spring…

c++多线程编程

一直对多线程编程这一块很陌生&#xff0c;决定花一点时间整理一下。 os:ubuntu 10.04 c 1.最基础&#xff0c;进程同时创建5个线程&#xff0c;各自调用同一个函数 [html] view plaincopy #include <iostream> #include <pthread.h> //多线程相关操作头文件&am…

ajax当页post请求,tag落地页--通过ajax-post请求数据

查询所有tag及其对应跳转链接$tags get_tags(array(get>all));$output . ;if($tags) {foreach ($tags as $tag):$output . . $tag->name .;endforeach;} else {_e(No tags created., text-domain);}$output . ;echo $output;交互tag查询image场景如下&#xff0c;通过页…

GIT的PUSH指令

### GIT的PUSH指令 $ git push <远程主机名> <本地分支名>:<远程分支名> * git push命令用于将本地分支的更新&#xff0c;推送到远程主机。 * 如果省略远程分支名&#xff0c;则表示将本地分支推送到与之对应的远程分支&#xff08;通常两者同名&#xff…

Android 编程下 Touch 事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括&#xff1a;dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev)&#xff1b;能够响应这些方法的控件包括&#xff1a;ViewGroup、View、Activity。方法与控件的对应关系如下表所…

ios微信本地视频上传到服务器,ios本地视频wx.uploadFile上传

//上传视频uploadVideo:function(){let _this this;let list [camera, album];wx.showActionSheet({itemList: [拍摄视频,从相册选择视频,从视频库选择视频],success: function (res) {if(res.tapIndex0 || res.tapIndex1){wx.chooseVideo({sourceType:[list[res.tapIndex]],…

如何手工抓取dump文件及分析

在生产环境下进行故障诊断时&#xff0c;为了不终止正在运行的服务或应用程序&#xff0c;有两种方式可以对正在运行的服务或应用程序的进程进行分析和调试。 首先一种比较直观简洁的方式就是用WinDbg等调试器直接attach到需要调试的进程&#xff0c;调试完毕之后再detach即可。…

Java 类加载机制详解

2019独角兽企业重金招聘Python工程师标准>>> 一、类加载器 类加载器&#xff08;ClassLoader&#xff09;&#xff0c;顾名思义&#xff0c;即加载类的东西。在我们使用一个类之前&#xff0c;JVM需要先将该类的字节码文件&#xff08;.class文件&#xff09;从磁盘…

JAVA vo pojo javabean dto区别

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean&#xff0c;类必须是具体的和公共的&#xff0c;并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知&#xff0c;属性名称符合这种模式&#xff0c;其他Java 类可…

编写的windows程序,崩溃时产生crash dump文件的办法

一、引言 dump文件是C程序发生异常时&#xff0c;保存当时程序运行状态的文件&#xff0c;是调试异常程序重要的方法&#xff0c;所以程序崩溃时&#xff0c;除了日志文件&#xff0c;dump文件便成了我们查找错误的最后一根救命的稻草。windows程序产生dump文件和linux程序产生…