簡體   English   中英

函數typedef和從C中的struct調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM