2012-07-10 68 views
0

假設我有一個變量,存儲回調。函數獲取存儲的回調

void* (*function)(int, double); 

現在我想創建一個函數,它將返回此回調。我不想讓用戶直接訪問回調函數。這是行不通的:

void* (*)(int, double) getCallback(); 

我的問題是:這樣的函數的原型是什麼樣的?

回答

5

typedef回調類型:

typedef void* (*pf)(int, double); 

pf getCallback(); 

這也將確保沒有從手動鍵入了錯誤的簽名,這樣的錯誤。

+0

就像一個魅力,謝謝! – Melon 2012-07-10 08:39:36

4

那麼,對於這種直接的語法是

void* (*getCallback())(int, double); 

但可能是更好的,更具可讀性是使用一個typedef:

typedef void* (*CallbackFunc)(int, double); 

CallbackFunc getCallback(); 
+0

嗯,typedef是好的,但使用原始方法似乎不工作 – Melon 2012-07-10 08:39:19

+1

@Melon我認爲它是'void *(* getCallback())(int,double);' – cnicutar 2012-07-10 08:54:22

+0

是的,這是正確的 – Melon 2012-07-10 08:59:47

相關問題