是否可以在另一个函数的定义中提供函数名作为初始值设定项?

时间:2017-08-13 16:51:50

标签: c

我们可以在另一个对象的定义中提供一个对象作为初始化器。它只是复制并将对象的值分配给另一个。

是否可以在另一个函数的定义中提供函数名作为初始值设定项?

C标准在哪里说是否允许?我没有找到它,所以我想这是可能的。

以下两个示例将导致语法错误:

#include <stdio.h>

int f(){};

int main()
{
    int (g=f)();
    int h() = f;
}

感谢。

2 个答案:

答案 0 :(得分:4)

你可能想要一个函数指针(作为一个函数在这个上下文中没有用):

int (*h)() = f;

答案 1 :(得分:1)

没有。函数声明不能​​有初始值设定项。 如果要确保类型兼容性,可以使用函数typedef

typedef int f_tp(void);
f_tp f, h; //check f and h for compatibility with int (*)(void)
int f(){}  //✓

//will get an error here because h was declared f_tp h == int h(void);
void h()
{
}