`void f(void())的意思是什么?

时间:2016-09-11 21:49:21

标签: c++ function-pointers

请考虑以下代码段:

void f(void());

void()作为参数类型的确切含义是什么?
如果它(可能是)函数指针或函数引用,它是合法代码吗?

据我所知,我无法将函数指针定义为:

void(f)() = &g;

为什么在处理函数时应该接受它?参数Δ

1 个答案:

答案 0 :(得分:-1)

第一次遇到它时,我困惑了一段时间。

我已经习惯了下面这些函数具有相同类型的事实:

void f(int[]);
void f(int*);

类似的东西适用于函数指针。

正如工作草案dcl.fct中提到的那样(强调我的):

  

使用以下规则确定函数的类型。 [...]确定每个参数的类型后,类型为“T的数组”的任何参数或功能类型T的被调整为“指向T的指针” 。 [...]

因此,以下功能:

void f(void());

具有相同类型:

void f(void(*)());

因此下面的定义是相同的:

void f(void(g)());
void f(void(*g)());