函数 typedef 和从 C 中的结构调用函数
function typedef and call to function from struct in C
我正在尝试找出以下代码。
特别是与函数 typedef 相关的部分。
#include <stdio.h>
void foo1(int var1, int var2); // foo1 decleration
typedef void (foo2)(int var1, int var2); // what is this exactly?
typedef struct somestruct{
foo2* somefunc;
}SOMESTRUCT;
int main()
{
SOMESTRUCT struct1;
struct1.somefunc = &foo1;
struct1.somefunc(1,5);
return 0;
}
void foo1(int var1, int var2){
printf("this is function inside struct var1 = %d var2 = %d",var1, var2);
}
线...
typedef void (foo2)(int var1, int var2); // what is this exactly?
...声明一个新类型,foo2
,作为一个带有两个 int
参数和 returns void 的函数。
后面的代码中,函数foo1
的地址(与函数签名匹配)存储在struct1
的somefunc
成员中,然后调用它。参数 1 和 5.
Tim Randall 的解释很好,但让我补充一下。
typedef
关键字定义了一种新的数据类型,可以用来代替其原始定义。如果您不想使用 typedef
,该结构可以定义为:
typedef struct somestruct{
void(*somefunc)(int a,int b);
}SOMESTRUCT;
在这种情况下,我们不会节省太多,但如果我们有多个函数指针,使用 typedef
会节省很多,并使程序更易于阅读。
我正在尝试找出以下代码。 特别是与函数 typedef 相关的部分。
#include <stdio.h>
void foo1(int var1, int var2); // foo1 decleration
typedef void (foo2)(int var1, int var2); // what is this exactly?
typedef struct somestruct{
foo2* somefunc;
}SOMESTRUCT;
int main()
{
SOMESTRUCT struct1;
struct1.somefunc = &foo1;
struct1.somefunc(1,5);
return 0;
}
void foo1(int var1, int var2){
printf("this is function inside struct var1 = %d var2 = %d",var1, var2);
}
线...
typedef void (foo2)(int var1, int var2); // what is this exactly?
...声明一个新类型,foo2
,作为一个带有两个 int
参数和 returns void 的函数。
后面的代码中,函数foo1
的地址(与函数签名匹配)存储在struct1
的somefunc
成员中,然后调用它。参数 1 和 5.
Tim Randall 的解释很好,但让我补充一下。
typedef
关键字定义了一种新的数据类型,可以用来代替其原始定义。如果您不想使用 typedef
,该结构可以定义为:
typedef struct somestruct{
void(*somefunc)(int a,int b);
}SOMESTRUCT;
在这种情况下,我们不会节省太多,但如果我们有多个函数指针,使用 typedef
会节省很多,并使程序更易于阅读。