【发布时间】:2016-02-18 16:28:53
【问题描述】:
这里是 C++ 程序员新手。
我将 Numerical Recipes (V3) 源代码用作更大的调制 C++ 项目的一部分。
虽然我会尽量不涉及我的问题的细节,但我很好奇为什么这些 NR 头文件不包含任何头保护?我知道这个问题对于那些过去使用过这个代码的人来说是非常具体的,但是看看 NR 论坛,他们似乎很不活跃......
我在代码中发现的提示此问题的错误是;
错误 LNK2005: "void __cdecl gaussj(class NRmatrix &)" (?gaussj@@YAXAAV?$NRmatrix@N@@@Z) 已在 Schmidt_V2_(Zeta).obj 中定义
错误 LNK2005: "void __cdecl gaussj(class NRmatrix &,class NRmatrix &)" (?gaussj@@YAXAAV?$NRmatrix@N@@0@Z) 已在 Schmidt_V2_(Zeta).obj 中定义
【问题讨论】:
-
数字食谱代码不是最高质量的,这是轻描淡写的。我也相信对代码重用有严格的限制。
-
因为他们很顽皮。他们坚持基于 1 的阵列(由于 Fortran 端口)尤其令人讨厌。但是代码是经过试验和测试的,所以有时值得使用。
-
除了在数值部分调试的很好,* code中的Numerical Recipies基本上是not写代码的一个例子。
-
在我看来,只有 NR 中的代码作者才能回答当前提出的问题,除非他们积极参与 SO 并插话,否则我们只能推测他们的动机。这将使这种“基于意见”成为结束问题的常见原因。
标签: c++ numerical-methods pragma include-guards numerical-recipes