2010-10-04 138 views
8

是什麼以下兩個聲明的區別:曖昧聲明

1. int foo(int); 
2. int foo(int()); 

我不知道如果這兩個聲明是等價的。 (2)(1)有什麼不同?

+2

退房的http://cdecl.org ......這將有利於... – liaK 2010-10-04 14:18:52

回答

13

int foo(int);是一個函數取的整數作爲參數並返回一個整數,以及申報

int foo(int());聲明的函數取作爲參數「的指針,一個函數返回int和服用{沒有參數[在C++]和未指定數量的參數[in C]}「並返回一個整數。

(2)相當於int foo(int (*pf)())int foo(int f())

+1

不帶參數?我相信你的意思是採取不明確的但不是可變的論點。 '(void)'是指定「無參數」的方式。 – 2010-10-04 14:19:36

+2

@R我相信只有C,而不是C++ – Tom 2010-10-04 14:20:26

+0

@R:對不起,我錯過了。添加到我的帖子中。 – 2010-10-04 14:21:52