MFC文件头问题 Dlg1调用了自己写的.h 而 Dlg2调用却提示 重复 已经在 WindowSizeDlg.obj 中定义

我在项目中新建了一个.h主要在文件内封装了一些函数我在Dlg1中include该.h并且include了Dlg2.h而我在Dlg2中调用.h封装内的函数却出现了未声明标识... 我在项目中新建了一个.h 主要在文件内封装了一些函数

我在Dlg1中 include 该 .h 并且 include 了 Dlg2.h

而我在 Dlg2中调用 .h封装内的函数却出现了 未声明标识符 当我在Dlg2 加入 我封装函数的.h
再次编译却出现了 "void __cdecl Windows_Z(struct HWND__ *,int)" (?Windows_Z@@YAXPAUHWND__@@H@Z) 已经在 WindowSizeDlg.obj 中定义

这类的字样

Dlg1.cpp 中我这样声明

#include "stdafx.h"
#include "Dlg1.h"
#include "Dlg1Dlg.h"
#include "classhwnd.h" //我封装的函数库
#include "Dlg2.h" //Dlg2对话框

而我在Dlg2.cpp中
#include "stdafx.h"
#include "Dlg1.h"
#include "Dlg2.h"

错误就出现在Dlg2.cpp
如果不加#include "classhwnd.h" 就说未声明标识符
加上又说 "void __cdecl Windows_Z(struct HWND__ *,int)" (?Windows_Z@@YAXPAUHWND__@@H@Z) 已经在 WindowSizeDlg.obj 中定义
重定义 咋办呢? 我在 classhwnd.h加上了

#pragma once
展开
 我来答
reverse_walker
2013-11-21 · TA获得超过590个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:466万
展开全部
在头文件里加上函数定义就是找虐的节奏, 就是对面上单遇到我瑞文的处境.

没人会把函数定义, non-const类型定义, 对象定义, 类的静态数据成员定义等等放在头文件中
因为这些东西的作用域都是跨模块的,
但是你可以把类定义,命名空间定义,const定义, 类中的成员函数定义等等放在头文件中, 因为....XXX,然后你可以使用static去限制作用域XXX, 使用extern去扩展作用域XXX.

总而言之, 函数声明放.h, 函数定义放.cpp即可.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式