修复简单C程序中的分段错误

时间:2015-07-28 08:51:55

标签: c function pointers segmentation-fault

我有一个计算角度对相关性的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;
}

3 个答案:

答案 0 :(得分:0)

什么是外部?

如果它是内联.h函数,您可能希望它是静态的:

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

但是,这样做的好方法是在网上包含.h中的标题,以及用你的项目编译的.c中的完整代码。

.h文件

double Y(double x);

.c文件

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

答案 1 :(得分:0)

看起来你根本不需要extern

头文件应如下所示:

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

原始文件包含标题,并使用其功能:

#include "poly_headerfile.h"

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

答案 2 :(得分:0)

由于它只是一个衬垫,而你正在使用C,最好的方法IMO将使用一个宏,在你的头文件中添加以下内容:

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

在C文件中,您可以使用:

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

它会更有效率并避免功能的麻烦,只要确保你记得将参数括起来!