2017-03-17 59 views
-3

所以,這是代碼:傳遞函數和整數的函數。警告:從兼容的指針類型傳遞的「」參數

void pass(void(), int); 
void hello(int); 

int main(void) 
{ 
pass(hello,0); 

return 0; 
} 

void pass(void rfunc(),int a) 
{ 
rfunc(a); 
} 

void hello(int a) 
{ 
printf("%d",a); 
} 

「0」的輸出作爲預期被打印。但是,我收到了我正在嘗試解決的這些警告。錯誤說:

in function 'main': 
warning: passing argument 1 of 'pass' from incompatible pointer type 

如何解決此警告?

+5

C或C++?這些是不同答案的不同語言。 –

+0

C和C++之間導致不兼容性的細節不同;奇怪的是,修正是一樣的。不要雙重標記問題仍然是一個非常好的主意 - 它會讓人感到困擾(包括我在內)。 –

回答

3

pass的第一個參數需要類型爲void (*)()的函數指針,但是您傳遞的是類型爲void (*)(int)的函數指針。這是一種不兼容的類型。

變化pass的參數來接受適當的類型:

void pass(void(int), int); 
... 
void pass(void rfunc(int),int a) 
{ 
    ... 
+0

非常感謝! XX – Vaishnavi

相關問題