c++头文件包含 #ifndef ##pragma once】的更多相关文章

2013-04-14 17:03 (分类:计算机程序) 烦死了,这种垃圾小问题很多,你又必须要知道.......在编写c++程序时,会编写多个类或者多个cpp文件,免不了要多次使用include包含头文件,于是重复包含的问题就来了,怎样避免这一情况呢? 在此我们使用条件编译来解决这个问题 #ifndef x //先测试x是否被宏定义过#define x程序段1     //如果x没有被宏定义过,定义x,并编译程序段1 #endif程序段2     //如果x已经定义过了则编译程序段2的语句,“忽…
当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义)    http://blog.csdn.net/clever101/article/details/4751717 看到这个警告,我想你一定悟到了什么.下面我说说我的结论:类的前置声明和包含头文件的区别在于类的前置声明是告诉编译器有这种类型,但是它没有告诉编译器这种类型的大小.成员函数和数据成员,而包含头文件则是完全告诉了编译器这种类型到底是怎样的(包括大小和成员).这下我们也明白了为何前置声明只能使用指针来进行,因为指…
在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用(不满足继承关系,而是组合关系).也就是需要互相声明.好了,这时候会带来一些混乱.如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法: 编码时,我们一般会尽量避免include头文件,而是采用声明 class XXX.但有时候还是必须用Include头文件,那么,两者的划分在于什么呢? 应该是很明确的,但书上好像都少有提及. 首先: 我们要明白为什么要用声明取代头文件包含:对了,是为了避免无必要的重编译(在头文件发生变…
error C2504:头文件包含不全 今天碰到了很烦的问题,继承一个类之后,感觉头文件都包含了,可还是出现父类未定义的问题,最后发现,子类的子类在实现时,需要在cpp文件中包含所有他的父类的定义.因为每个cpp文件是单独编译的,需要知道其所有父类来确定这个类的大小和实现的细节. 实例代码如下: //a.hclass A{ public: ; }; //b.h class B : public A { public: virtual void fun(); }; //b.cpp #include…
http://blog.csdn.net/jiajia4336/article/details/8996254 前向声明概念(forward declaration) 在程序中引入了类类型的B.在声明之后,定义之前,类B是一个不完全类型(incompete type),即已知B是一个类型,但不知道包含哪些成员.不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数. 前向声明应用场景 当你…
全局级别的引入 为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…
C++头文件记得加#pragma once不然可能会导致重定义类…
例如:要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ ············ 头文件结尾写上一行: #endif 大概是以前没有学好吧,对这里不是很理解,为什么要用这些呢?刚才上网查了查,借鉴了点高手的,自己总结了一点,就写在这里了,有什么错误之处,请大侠们指出 .比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是…