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

Fixing Segmentation Fault in simple C program

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

外部是什么?

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

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

但是,最好的方法是在线将 header 包含在您的 .h 中,并将完整代码包含在与您的项目一起编译的 .c 中。

.h 文件

double Y(double x);

.c文件

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

看起来你根本不需要extern

Header 文件应如下所示:

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

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

#include "poly_headerfile.h"

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

因为它只是一个衬里,而你使用的是 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;
}

这样会更高效,避免函数的麻烦,记得把参数括起来!