typedef int(init_fnc_t) (void)的理解


typedef int(init_fnc_t) (void);

這個就是一個取別名的過程。

我們通常情況下會如下使用 typedef :
typedef int MyInt;
MyInt a;

這個時候我們的MyInt 就和int是一樣的意思。

而對於函數的申明我們通常會這樣申明:
int InitFunction() (void);
此時表示申明了一個函數名為InitFunction的函數, 函數沒有任何的形參,返回值類型為int型。

而對於 typedef int(init_fnc_t) (void);
就是對一個 int (void)類型的函數類型進行取別名init_fnc_t。 我們可以利用這個別名進行創建這個類型的函數對象。

init_fnc_t *MyFunction;
這里就是一個函數的指針。如果某個函數的類型和這個函數一樣的,那么可以將這個函數的指針指向該函數。然后你就可以直接調用MyFunction();

以下是例子:
#include <stdio.h>

int GetData(void)
{
    return 101;
}

int main()
{
    typedef int (init_fnc_t)(void);
    typedef int (*init_fnc_t_p)(void);   
    init_fnc_t *MyFunction;    
    init_fnc_t_p MyFunctionP;   
    MyFunction = GetData;
    MyFunctionP = GetData;   
    printf("(init_fnc_t)(void) = %d \n",MyFunction()); 
    printf("(*init_fnc_t_p)(void) = %d \n",MyFunctionP()); 
    
    return 0;
}

  

 

這個時候打印出來的結果就是 

101

101



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM