结构体内也是可以添加函数的,找了很久发现都是定义和实现都是写在一起的。以下代码来源:链接
include<stdio.h>
#include<malloc.h>
struct Hello{
void (*sayHello)(char* name);
};
void sayHello(char* name){
printf("你好,%s\n",name);
}
int main(){
struct Hello* hello=(struct Hello *)malloc(sizeof(struct Hello));
hello->sayHello=sayHello;//这个结构体有多少个函数,就要在这个有多少个结构体内,函数指针指向函数的声明。
hello->sayHello("a");
return 0;
}
此时也可以将sayHello的定义和实现分开。
当我直接在.h文件中实现了sayHello时会出现重复定义的情况,这就很奇幻了,后来我在实现的时候加了static关键字就能结构体函数重复定义的问题了。
include<stdio.h>
#include<malloc.h>
struct Hello{
void (*sayHello)(char* name);
};
static void sayHello(char* name){
printf("你好,%s\n",name);
}
int main(){
struct Hello* hello=(struct Hello *)malloc(sizeof(struct Hello));
hello->sayHello=sayHello;//这个结构体有多少个函数,就要在这个有多少个结构体内,函数指针指向函数的声明。
hello->sayHello("a");
return 0;
}