2017-08-13 132 views
-1

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

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

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

下面两个例子将导致语法错误:

#include <stdio.h> 

int f(){}; 

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

感谢。

+1

变量可以被初始化。它有什么目的来初始化一个函数?或者给函数赋值?你是指函数指针吗? – Gerhardh

+1

您无法初始化或分配功能。你可以初始化一个函数指针,但是语法不是这样的。尝试'int(* g)()= f;' –

回答

4

你可能需要一个函数指针(作为函数并没有真正在这方面的意义上):

int (*h)() = f; 
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() 
{ 
} 
相关问题