2015-07-28 62 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