我有一个计算角度对相关性的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 :(得分: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;
}
它会更有效率并避免功能的麻烦,只要确保你记得将参数括起来!