请教,如何防止多次定义? 如果在一个.cpp文件中直接和间接的#include了同一个.h文件两次,该.h文件中包含自己定义的一个类,运行的时候会提示重复定义的错误。这种情况是否可以通过条件编译来防止?有什么好的解决方法?具体该怎么做?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #ifndef xxxxxxxx#defien xxxxxxxx#endif或#pragma once 如果在一个.cpp文件中直接和间接的#include了同一个.h文件两次,===系统会自动处理的你看系统生成的头文件的前面 具体的是:我在MFC生成的文档和视图的头文件中都#include "chsv.h"而在chsv.h中我定义了一个Chsv类,结果是:Output WindowCompiling...Motion.cppe:\\myproject\motion\chsv.h(3) : error C2011: 'Chsv' : 'class' type redefinitionMotionView.cppe:\\myproject\motion\chsv.h(3) : error C2011: 'Chsv' : 'class' type redefinitionGenerating Code...Error executing cl.exe.ResultsMotion.exe - 2 error(s), 0 warning(s) 你是把Chsv类的定义了两次吧。好好检查一下看看。 你在Chsv的头文件上加上#ifndef _CHSV_H#define _CHSV_H..这里加你的类.#endif 在视图类里定义就行了然后把你要用的成员变量定义为一个全局的让视图类全部都可以访问.其他类想用的话就用extend 加上你的定义就行啦.如:int f();这个定义在***view.cpp在其它的.cpp里就用extend int f(); to cheeralen(夏日香气):按照你所说的方法,#ifndef _CHSV_H#define _CHSV_H..这里加你的类.#endif可以正确运行,但是语句不是很懂,能不能讲解一下,尤其是其中的_CHSV_H是指什么? faint如果定义了_CHSV_H这个头文件就不在定义了如果没有定义这个头文件就定义_CHSV_H这个头文件 对不起,我的意思是——为什么写成_CHSV_H,而不是chsv.h? 你可以把_CHSV_H换成_H__67D82AEE_04A3_407B_B3F3_699451A5EF29__INCLUDED_想写什么写什么 #ifndef xxxxxxxx#defien xxxxxxxx#endif或#pragma once 双缓存绘图问题 caany算子中有几行代码不懂 检测设备问题 (大家帮个忙!!) CLISTCTRL的SetItemText不显示,要我手动刷新窗口才显示 谁对音频传输熟悉?帮看代码,50元现金酬谢。 出现非期望的结尾错误。 关于类的公共属性访问问题! 对话筐中汉字显示乱码 各位同仁,能不能共享一个udp通信的例子 各位大师帮个忙! 滚动条的问题 对_variant_t 不,希望各位指点?
#defien xxxxxxxx
#endif或
#pragma once
===
系统会自动处理的
你看系统生成的头文件的前面
我在MFC生成的文档和视图的头文件中都#include "chsv.h"
而在chsv.h中我定义了一个Chsv类,
结果是:
Output Window
Compiling...
Motion.cpp
e:\\myproject\motion\chsv.h(3) : error C2011: 'Chsv' : 'class' type redefinition
MotionView.cpp
e:\\myproject\motion\chsv.h(3) : error C2011: 'Chsv' : 'class' type redefinition
Generating Code...
Error executing cl.exe.Results
Motion.exe - 2 error(s), 0 warning(s)
#ifndef _CHSV_H
#define _CHSV_H
.
.这里加你的类
.
#endif
其他类想用的话就用extend 加上你的定义就行啦.如:int f();这个定义在***view.cpp
在其它的.cpp里就用extend int f();
按照你所说的方法,
#ifndef _CHSV_H
#define _CHSV_H
.
.这里加你的类
.
#endif可以
正确运行,
但是语句不是很懂,能不能讲解一下,尤其是其中的_CHSV_H是指什么?
如果没有定义这个头文件就定义_CHSV_H这个头文件
为什么写成_CHSV_H,而不是chsv.h?
_H__67D82AEE_04A3_407B_B3F3_699451A5EF29__INCLUDED_想写什么写什么
#defien xxxxxxxx
#endif或
#pragma once