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