首先,(void (*)( )) 是一个类型名(type name),而且指定的是一个指针类型,又不是函数类型。
其次,那一对空的括号并不意味着参数为空。 N1570,6.7.6.3 Function declarators (including prototypes):
The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied.
这就是说,如果在函数声明中使用空的参数列表,则意味着未提供参数的数量或类型信息,但并不是无参数。从C99开始,如果函数没有参数,建议使用(void)。
1
2
3
4
5
6
7
8
9
10
|
int
main (
void
)
{
void
f();
f(2);
}
void
f (
int
i)
{
printf
(
"%d\n"
, i);
}
|
参考 http://bbs.csdn.net/topics/390769303