error C2504:头文件包含不全 今天碰到了很烦的问题,继承一个类之后,感觉头文件都包含了,可还是出现父类未定义的问题,最后发现,子类的子类在实现时,需要在cpp文件中包含所有他的父类的定义.因为每个cpp文件是单独编译的,需要知道其所有父类来确定这个类的大小和实现的细节. 实例代码如下: //a.hclass A{ public: ; }; //b.h class B : public A { public: virtual void fun(); }; //b.cpp #include…
对C++和VS2010非常不熟悉,但是无奈赶着项目,只能看了点基础就上手,然后就碰到这个问题了. 原因分析: http://bbs.csdn.net/topics/340191697?page=1 编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间.      为了提高编译速度,将那些不常被修改,比较稳定,文件单独包含到一个指定的头文件中, 然后生成一个预编译头文件 *.pch . VC中默认的头文件为 stdAfx.h, 但…
c++ 头文件包含 原因的分析:   c++  头文件的循环引用是指: .h 里面的里面的头文件的相互包含的,引起的重复引用的问题.cpp 里面包含头文件是不存在重复引用的问题(因为CPP没有#ifndef #define #endif 这个). 关键的原因是:#ifndef #define #endif 引起的.  翻译一下就是  如果没有定义 包含, 如果定义了 就不包含了. 由于 宏是全局唯一的,所以只会包含一次.这就是引起重复包含的原因.这些问题的解决办法:http://my.oschi…
http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明之后,定义之前,类B是一个不完全类型(incompete type),即已知B是一个类型,但不知道包含哪些成员.不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数. 前向声明应用场景 当你…
在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用(不满足继承关系,而是组合关系).也就是需要互相声明.好了,这时候会带来一些混乱.如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法: 编码时,我们一般会尽量避免include头文件,而是采用声明 class XXX.但有时候还是必须用Include头文件,那么,两者的划分在于什么呢? 应该是很明确的,但书上好像都少有提及. 首先: 我们要明白为什么要用声明取代头文件包含:对了,是为了避免无必要的重编译(在头文件发生变…
当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义)    http://blog.csdn.net/clever101/article/details/4751717 看到这个警告,我想你一定悟到了什么.下面我说说我的结论:类的前置声明和包含头文件的区别在于类的前置声明是告诉编译器有这种类型,但是它没有告诉编译器这种类型的大小.成员函数和数据成员,而包含头文件则是完全告诉了编译器这种类型到底是怎样的(包括大小和成员).这下我们也明白了为何前置声明只能使用指针来进行,因为指…
2013-04-14 17:03 (分类:计算机程序) 烦死了,这种垃圾小问题很多,你又必须要知道.......在编写c++程序时,会编写多个类或者多个cpp文件,免不了要多次使用include包含头文件,于是重复包含的问题就来了,怎样避免这一情况呢? 在此我们使用条件编译来解决这个问题 #ifndef x //先测试x是否被宏定义过#define x程序段1     //如果x没有被宏定义过,定义x,并编译程序段1 #endif程序段2     //如果x已经定义过了则编译程序段2的语句,“忽…
全局级别的引入 为VS所有项目设置包含目录和库目录,对所有项目都有效 如下图所示:工具-选项-项目和解决方案-VC++目录-包含文件:在此添加头文件目录即可 工具-选项-项目和解决方案-VC++目录-库文件:在此添加lib库文件目录即可 项目级别的引入 为单个项目设置包含目录和库目录,只对设置的项目有效 头文件包含目录: 项目上右键-属性-C/C++常规-附加包含目录 Lib库文件目录: 项目上右键-属性-连接器-常规-附加库目录 comment(lib,”test.lib”) comment包…
1.包含目录:include 头文件包含目录设置: project->setting->C/C++->常规: Additional include directories(附加包含目录): ../../include等等 2.工作目录:应用应用程序工作目录.默认为包含项目文件目录. project->配置属性->调试 3.输出目录:项目调试时链接该项目的*exe或*dll的路径.例如D:\bin\debug.          project->配置属性->常规…
Eclipse 中 Android.mk文件c++头文件包含问题 jni中的目录结构如下: 编译找不到头文件 LOCAL_PATH := $(call my-dir)LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_C_INCLUDES += ncnn_android_build/include 可以找到头文件 LOCAL_PATH := $(call my-dir)LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_C_INCLUDES…