将函数erf()和erfc()添加到math.h _的基础知识。

时间:2011-10-05 03:03:50

标签: c++ linker-errors turbo-c++

我正在使用WINDOWS机器中的Borland Turbo C ++编译器,并在C中编写了一段代码。

我想在我的一个计算中使用互补误差函数erfc()。

但是,当我运行代码时,错误是 “链接器错误:模块filename.c中未定义的符号_erfc”

这里的问题是erfc()和erf()应该包含在math.h库中。 但是,我的这些不可用。

有人可以告诉我如何在程序中包含这些功能吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您可能需要传递一些特殊选项才能链接到数学库。

Borland Turbo C ++也可能不支持erfc()功能。

在C中,1990 ISO C标准不包括erfc()函数。它被1999年的标准添加到语言中。 (我不确定C ++。)我认为Borland Turbo ++相当陈旧。

尝试编写一个调用sqrt()的小程序。如果你可以让它工作,erfc()仍未被识别,那么Borland不支持它。

在后一种情况下,要么获得一个更新的编译器(有许多免费的编译器,这在任何情况下都可能是个好主意),或者找到erfc()的开源实现。

答案 1 :(得分:1)

您需要链接数学库。在Unix机器上,这是通过将-lm标志传递给链接器来完成的,这意味着“链接到名为libm的库”。你可能需要为Borland做类似的事情,但我不确定细节。希望这会让你朝着正确的方向前进。