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 展开
我在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 展开
1个回答
展开全部
在头文件里加上函数定义就是找虐的节奏, 就是对面上单遇到我瑞文的处境.
没人会把函数定义, non-const类型定义, 对象定义, 类的静态数据成员定义等等放在头文件中
因为这些东西的作用域都是跨模块的,
但是你可以把类定义,命名空间定义,const定义, 类中的成员函数定义等等放在头文件中, 因为....XXX,然后你可以使用static去限制作用域XXX, 使用extern去扩展作用域XXX.
总而言之, 函数声明放.h, 函数定义放.cpp即可.
没人会把函数定义, non-const类型定义, 对象定义, 类的静态数据成员定义等等放在头文件中
因为这些东西的作用域都是跨模块的,
但是你可以把类定义,命名空间定义,const定义, 类中的成员函数定义等等放在头文件中, 因为....XXX,然后你可以使用static去限制作用域XXX, 使用extern去扩展作用域XXX.
总而言之, 函数声明放.h, 函数定义放.cpp即可.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询