[英]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
參數並返回 void。
在后面的代碼,函數的地址foo1
(該函數簽名相匹配)存儲在somefunc
成員struct1
,然后它叫。 參數 1 和 5。
Tim Randall 的解釋非常好,但讓我補充一下。
typedef
關鍵字定義了一種新的數據類型,可以用來代替其原始定義。 如果您不想使用typedef
,則結構可以定義為:
typedef struct somestruct{
void(*somefunc)(int a,int b);
}SOMESTRUCT;
在這種情況下,我們不會節省太多,但如果我們有多個函數指針,使用typedef
節省很多,並使程序更易於閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.