请考虑以下代码段:
void f(void());
void()
作为参数类型的确切含义是什么?
如果它(可能是)函数指针或函数引用,它是合法代码吗?
据我所知,我无法将函数指针定义为:
void(f)() = &g;
为什么在处理函数时应该接受它?参数Δ
答案 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)());