读书人

在C++种中调用头文件中的函数

发布时间: 2013-09-28 10:01:20 作者: rapoo

在C++类中调用头文件中的函数。
在类的定义bb.h 和类的实现 bb.cpp中都要用到下面的头文件中的函数,但是在bb.h 或bb.cpp中#include"aa.h"
都会报警 提示变量二次定义。如果不#include"aa.h"就提示变量未定义。
我的头文件如下:

/*aa.h*/
#include <windows.h>

typedef BOOL(__stdcall*TaDeleteFile)(LPCTSTR);

typedef struct
{


TaDeleteFile BaDeleteFile;
}PARAMETER111;

PARAMETER111 Parameter111;

void Func()
{


HMODULEhKernel32 = LoadLibrary("kernel32.dll");
memset(&Parameter111, 0, sizeof(PARAMETER111));
Parameter111.BaDeleteFile = (TaDeleteFile)GetProcAddress(hKernel32, "DeleteFileA");
FreeLibrary(hKernel32);

}

#endif
[解决办法]
PARAMETER 111 Parameter111;
重定义了
看看这个吧
http://blog.csdn.net/q191201771/archive/2011/05/06/6399820.aspx
[解决办法]
在头文件中最好不要写函数定义,也不要定义变量,你的头文件里面有个void Func()的实现,还有PARAMETER111 Parameter111的对象定义。函数与非const对象在C++中的作用域为全局作用域,而#define的作用域为文件作用域,因此如果两个文件中同时引用这个头文件就出先重定义的情况,即使加上条件预编译也没用,不过在bb.h里引用这个头文件,然后在bb.cpp中引用bb.h,如果bb.h没有再被别的文件include的话,按说应该也不会出现重定义的,你是不是还有出bb.cpp的另一个文件也引用了bb.h

读书人网 >C++

热点推荐