2015-07-28 71 views
0

我有一個C程序可以計算角度對相關性,代碼可以正常工作。一位在代碼行的說像在簡單的C程序中修復分割錯誤

A = B * C 

我做了和編譯(那編譯沒有問題),我想添加一個乘法因子.h的C函數,即我想要它做的這個

A = B * C * Y(x) 

現在,當我運行原始代碼時,出現分段錯誤。我懷疑它是我的.h函數有問題(我對C不是很熟悉)。我沒有在我的函數中使用指針。基本上看起來像這樣

extern double Y(double x) 
{ 
double Z; 
Z = polynomial_function_in_x; 
return Z; 
} 
+0

如果它是一個只有一個.c文件的簡單程序,則不需要使用.h – wimh

+0

它在哪裏崩潰? –

回答

0

因爲它只是一個襯墊,並且正在使用C,該最好的方法IMO將是使用宏,在你的頭文件中添加以下內容:

#define Y(_x) (polynomial_function_in_x(_x)) 

而且在C文件y您可以同時使用:

#include "poly_headerfile.h" 
int main(int argc, char** argv) 
{ 
    A = B * C * Y(x); 
    return 0; 
} 

這將是更有效,避免了功能的麻煩,只要確保你還記得你的括號參數!

0

什麼是外部?

如果它是一個內聯.H功能,你可能希望它是靜態的:

static double Y(double x) 
{ 
    double z; 
    z = polynomial_function_in_x; 
    return polynomial_function_in_x; 
} 

然而,要做的好辦法這將是在線在您的.h頭,以及與您的項目一起編譯的完整代碼。

.h文件中

double Y(double x); 

.c文件

double Y(double x) 
{ 
    double z; 
    z = polynomial_function_in_x; 
    return polynomial_function_in_x; 
} 
0

它看起來並不像你需要extern可言。

頭文件應該是這樣:

static inline polynomial_function(...) 
{ 
    ... 
} 

原始文件包括報頭,並使用其功能:

#include "poly_headerfile.h" 

double Y(double x) 
{ 
    return polynomial_function(x); 
} 
+0

感謝您的建議,我現在變成了一個靜態函數,使用代碼創建了一個.h頭文件和一個.c文件,然後編譯並運行了一切,但我仍然遇到了分段錯誤。有什麼你能想到的,這可能是造成這種情況的原因嗎?謝謝。 – hsnee