0
typedef double func(double)
頭和一個叫
double function(func f);
頭函數聲明這是定義做一些相應的.C文件。因此,訪問此我有一個包含
#include"necessaryheader.h"
double f(double x){
return 1.0;
}
int main(){
func f;
double x = function(f);
std::cout << x << std::endl;
}
文件MAIN.C但是,當我試圖編譯這個它拋出一個錯誤
undefined reference to `function(double (*)(double))'
這是爲什麼,是不完全的類型'function(func f)'作爲參數? 更好的問題是如何讓這些類型匹配?
您的「標題中的函數」只是一個聲明,而不是一個定義。錯誤是說你從來沒有定義函數,所以鏈接器不知道該調用什麼。這不是類型不匹配。 –
該功能在相應的.C文件中被適當地定義。 – Escap3faith
@ Escap3faith但是,你真的編譯該文件並將生成的obj文件鏈接到最終的可執行文件嗎?這聽起來像你沒有這樣做。 –