我在头文件C ++文件中有一组函数指针对象,我在主头文件中包含此文件,然后尝试在另一个C ++文件中使用这些对象(初始化函数指针,然后通过另一部分使用这些指针)代码)但我总是得到一个“多重定义”的错误。有没有办法在头文件中声明全局函数指针对象?
答案 0 :(得分:4)
您可以在主标题中执行此操作。 (假设您正在使用名为FnPointer的typedef)
extern FnPointer fn;
然后在您的实施文件中
FnPointer fn;
(extern
表示此变量将存在,但我稍后将在其他编译单元中为其分配空间。)
答案 1 :(得分:4)
就像使用任何其他全局指针一样使用它们。
extern
。第1步:
file.h
extern Func_Pointer ptr1; /* Declaration of the function pointer */
第2步:
file.cpp
#include "file.h" /* Declaration is available through header */
/* define it here */
Func_Pointer ptr1 = //some address;
第3步:
someOtherfile.cpp
#include "file.h"
void doSomething(void)
{
*(ptr1)(); //Use it here
}