2017-08-13 135 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() 
{ 
} 
相關問題