目前在我的科学计算代码中,我有以下内容:
这个在Linux上可以运行...至少我没有在所有平台上测试过C编译器。然而,最近在调查一些旧的Fortran代码时,我偶然发现了另一个代码中定义π的聪明方式(不是我自己的):
当然,在C语言中这是完全可行的,对吧?所以我可以定义我的转换函数类似于:
哪种方法更具可移植性?是否有任何数字(例如四舍五入)考虑因素,使得使用一种方法比另一种方法更合适?
我确实喜欢M_PI常数使代码更易读。当然,我也可以通过上述方法自己分配一个PI常数。
对于将针对多个平台(Windows、Linux等)的C/C++代码来说,什么被认为是最佳实践?
//Include M_PI constant
#define _USE_MATH_DEFINES
//Needed for square root function.
#include <math.h>
这个在Linux上可以运行...至少我没有在所有平台上测试过C编译器。然而,最近在调查一些旧的Fortran代码时,我偶然发现了另一个代码中定义π的聪明方式(不是我自己的):
<angle in deg.>*8.0d0 * datan(1.0d0) / 360.0d0
当然,在C语言中这是完全可行的,对吧?所以我可以定义我的转换函数类似于:
inline double DegToRad(const double A)
{
return A * atan(1.0) / 45.0;
}
哪种方法更具可移植性?是否有任何数字(例如四舍五入)考虑因素,使得使用一种方法比另一种方法更合适?
我确实喜欢M_PI常数使代码更易读。当然,我也可以通过上述方法自己分配一个PI常数。
对于将针对多个平台(Windows、Linux等)的C/C++代码来说,什么被认为是最佳实践?
M_PI
,用#ifndef M_PI
...#endif
括起来。 - andand