2010-12-07 154 views
3

請問您能解釋下列行的含義嗎?C++ typedef聲明

typedef int (*Callback)(void * const param,int s) 

回答

6

這意味着Callback是該類型的新名稱:指向函數返回一個int並考慮類型的兩個參數的常量指向void「和「INT」。

給定一個功能f

int f(void * const param, int s) 
{ 
    /* ... */ 
} 

Callback可以被用來存儲一個指針f

Callback c = &f; 

功能f可以通過指針稍後調用而不直接參考其名稱:

int result = c(NULL, 0); 

在通話時,名稱f未出現。

+0

,我該如何實現這個功能呢? – gln 2010-12-07 07:49:21

+1

@gln:它是一個指向函數的指針,它通常意味着指向與簽名匹配的現有函數 – icecrime 2010-12-07 07:52:29

2

它創建一個新的「別名」或名稱,通過它可以引用指向返回int並帶兩個參數的函數的指針:a void* const和int。然後,您可以創建該類型的變量,分配給他們,通過他們等調用函數,如:

int fn(void * const param,int s) { ... } 

Callback p; 
p = fn; 
int x = p(NULL, 38); 

注意typedef■不要真正創造新類型的... ...每一個等效的typedef解析爲單真正的類型重載,模板實例化等的目的..

2

它聲明的函數類型:

// Set up Callback as a type that represents a function pointer 
typedef int (*Callback)(void * const param,int s); 

// A function that matches the Callback type 
int myFunction(void* const param,int s) 
{ 
    // STUFF 
    return 1; 
} 

int main() 
{ 
    // declare a variable and assign to it. 
    Callback funcPtr = &myFunction; 
}