基于VC中使用ForceInclude来强制包含stdafx.h的解决方法

在使用VC编程中,为了加快编译,vc编译器提供了预编译的功能。即在cpp代码中包含stdafx.h,那么就可以使用到预编译。
如下所示:


代码如下:

#include "stdafx.h"
class Demo
{
public:
    Demo(void);
    ~Demo(void);
};

注意: #include “stdafx.h” 是自己手动写的,默认是没有的。
因此,有时总会出现忘记写这个的事情,这时候编译器就会报一个错误:


代码如下:

Error    1    fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?   
d:\3_code\vc\forceincludedemo\forceincludedemo\demo.cpp    11

要是能不添加stdafx.h也能有预编译这个功能就好了。

ForceIncludes
经过一番查找,我发现在编译器中提供了一个/FI (Name Forced Include File)的选项。
通过使用这个选项就可以避免这样的事情发生了。
这个参数的设置在工程的“属性”对话框中,具体是C++下面Advanced中的Force Includes属性。
如图:

(0)

相关推荐

  • VC6.0常见链接错误与解决方法

    (1)error LNK2001: unresolved external symbol _main 编号:LNK2001 直译:未解决的外部符号:_main. 错误分析:缺少main函数.看看main的拼写或大小写是否正确. (2)error LNK2005: _main already defined in xxxx.obj 编号:LNK2005 直译:_main已经存在于xxxx.obj中了. 错误分析: 直接的原因是该程序中有多个(不止一个)main函数.这是初学C++的低年级同学在初次

  • VC6.0常见编译错误提示附解决方法

    (1)error C2001: newline in constant 编号:C2001直译:在常量中出现了换行.错误分析: 1.①字符串常量.字符常量中是否有换行.2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号.3.③在这语句中,某个字符创常量中是否出现了双引号字符""",但是没有使用转义符"\"".4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号.5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号. (2)er

  • MFC自定义消息的实现方法

    一.概述: 消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等.但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点.对此,我们可以通过添加相应的代码去完成这个功能. 二.实现方法: 添加自定义消息操作如下: 1. 建立MFC工程,如基于对话框的应用程序,Test. 2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码. (因为很多MFC的消息是在WM_USER内的

  • 构建mfc窗体的简单示例

    复制代码 代码如下: #include<afxwin.h>//包含MFC头文件//从MFC的主要框架窗体派生用户窗体类class CMyWnd:public CFrameWnd{public: CMyWnd(LPCTSTR szTitle) {  //调用父类Create函数创建窗体  Create(NULL,szTitle); }};//从MFC的应用程序派生用户程序类class CMyApp:public CWinApp{public: virtual BOOL InitInstance(

  • ON_COMMAND_RANGE多个按钮响应一个函数的解决方法

    本文描述了ON_COMMAND_RANGE多个按钮响应一个函数的解决方法. 开发人员需要注意在自定义消息响应函数的声明过程中,一定要注意参数的形式,稍微一疏忽就会导致莫须有的错误,具体以ON_COMMAND_RANGE为例说下. 1.声明消息响应函数:在要添加的工程上添加函数afx_msg void OnButtonPort(); 2.消息映射: BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) //{{AFX_MSG_MAP(CXXXDlg) ON_WM_SYSCOMMA

  • VC定制个性化的MessageBox解决方法

    相信学过VC的人都知道MessageBox()函数的用法: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style ); 虽然在参数uType中可以指定一些样式,但你在程序中能够对MessageBox的外观所做的定义却不多.原因

  • VC6.0打开文件以及向工程中添加文件时程序崩溃自动退出解决方法

    换了一台电脑,vc6.0程序中,点击打开文件以及向工程中添加文件时,程序竟然崩溃自动退出了. 不知什么原因,安装相同的vc程序,本本竟然出现此缘故.但是这个操作又是自己经常用到的,所以不得不解决. 与上一台电脑不同的是,此电脑是win7系统,而上一个则是xp系统.此电脑office是2010版本,而上一个则是WPS:于是乎,在网上查资料,来解决. 看到网上也有类似的问题,有的说是win7系统原因,有的说是office2007版本缘故,有的说是viso缘故.总之,这几种说法,我都符合.win7系统

  • MFC实现全屏功能代码实例

    windows应用程序中有很多的播放器都有快捷键控制窗口以全屏幕的方式显示.MFC实现给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以实现了. 实现代码如下所示: void CFullScreenDlg::FullScreenView(void) { RECT rectDesktop; WINDOWPLACEMENT wpNew; if (!IsFullScreen()) { // We'll need these to rest

  • 基于VC中使用ForceInclude来强制包含stdafx.h的解决方法

    在使用VC编程中,为了加快编译,vc编译器提供了预编译的功能.即在cpp代码中包含stdafx.h,那么就可以使用到预编译.如下所示: 复制代码 代码如下: #include "stdafx.h"class Demo{public:    Demo(void);    ~Demo(void);}; 注意: #include "stdafx.h" 是自己手动写的,默认是没有的.因此,有时总会出现忘记写这个的事情,这时候编译器就会报一个错误: 复制代码 代码如下: Er

  • VC中LINK 2001 和 LINK 2009 的错误的解决方法

    最近将两个开源C++项目编译成windows版本的时候遇到很多问题,关键是两个项目经过同事的修改之后,一个项目引用了另一个项目,两个项目的头文件中都有一些跨平台的关于数据类型,以及一些通用函数的定义,所以导致有冲突,编译的时候总是报错,报的最多的是"无法解析的外部符号",经过近3天的折腾总算都通过了,这里是一些总结. 首先,关于VC中的lib,与linux下的静态库是不同的,在VC中编译动态库的时候会生成一个lib和一个对应的dll,使用者在使用的时候需要包含头文件以及连接到该lib,

  • 基于Linux系统中python matplotlib画图的中文显示问题的解决方法

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些初步的数据挖掘和分析. 在使用matplotlib画图时,横坐标为中文,但是画出的条形图横坐标总是显示"框框",就去查资料解决.感觉这应该是个比较常见的问题,网上的中文资料也确实很多,但是没有任何一个彻底解决了我遇到的问题.零零碎碎用了快3个小时的时间,才终于搞定.特此分享,希望能帮到有同

  • 基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf

  • vue中使用iview自定义验证关键词输入框问题及解决方法

    一.验证需求 对应配置的关键词输入框,验证要求如下: 1.总字数不能超过7000个: 2.去除配置的关键词特殊符号,得到的关键词组数不能超过300:(如:aaa&(bbb|ccc)|(!ddd|eee)),去掉特殊符号,有5组) 3.单个关键词长度不能超过20:(如:aaaaa&(bbb|ccc)),如果aaaaa长度超过20则提示) 二.解决方法 在关键词输入对应的FormItem中加入一个prop属性,作为验证字段使用:注意该FormItem是包含于Form的: form表单中添加ru

  • js中Number数字数值运算后值不对的解决方法

    问题: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎么可能多出这么小数点出来. 我Google了一下,发现原来这是JavaScript浮点运算的一个bug. 比如:7*0.8 JavaScript算出来就是:5.6000000000000005 解决方法:网上找到了一些解决办法,就是重新写了一些浮点运算的函数. 下面就把这

  • JavaScript中无法通过div.style.left获取值的解决方法

    一.问题总结: 样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取. 让元素移动到200停止 setTimeout ( function () { var div = document.getElementById("div4"); //var left = parseInt(div.style.left) + 5; var left = div.offsetLeft + 5; div.sty

  • py文件转exe时包含paramiko模块出错解决方法

     问题描述: python代码中包含paramiko模块的远程登录ssh,在用pyInstaller转为exe时报错, 报错提示为"No handlers could be found for logger "paramiko.transport" 出错位置: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 解决方案: 添加一行代码,记录传输日志. 代码如

  • 基于javaWeb 项目SSM配置要点及可能遇到的问题和解决方法

    我发现网上许多讲解javaweb 项目 SSM(Spring,SpringMVC,Mybatis)配置的时候有些重点没有提到,一下我会贴上一些重要的配置和可能出现问题的地方,适合初学者借鉴 1. 新建javaweb项目是可以在新建的时候就选择相关依赖库,也可以用maven导入. 2.在从外部导入依赖库的时候记住要在war 中也导入,否则在服务器上就会找不到相关的依赖库,打包就会失败. 3. 在web.xml 中 配置 <!--1.启动Spring的容器 --> <!-- needed f

  • Linux 强制安装 rpm 包的解决方法

    Linux 正常安装 rpm 的命令是: rpm -ivh xxx.rpm 重复安装时需加属性: 软件包重复安装将会失败,若仍需要安装必须加 --replacepkgs 属性 软件包的某个文件已在安装其他软件包时安装过,则安装将会失败,若仍需要安装必须加 --replacefiles  属性 解决依赖问题: 加上 --nodeps 属性,不考虑依赖关系 强制安装: 加上 --force 属性,强制进行安装 但一般不建议这样操作,因为可能引起其它问题,建议配置成 yum 安装. 总结 以上所述是小

随机推荐