我有以下小程序,它在我的较大项目中重现了触发错误:
#define _USE_MATH_DEFINES
#include <math.h>
#include <stdio.h>
#define R2D(trig_fn, val) trig_fn (val * (180.0 / M_PI))
int main()
{
printf("%f\n", R2D(atan, 2.5));
return 0;
}
从弧度转换为度的 atan(2.5) 的预期结果是 68.1985...,但该程序输出 1.563815,这与正确答案相去甚远。
我将它预处理到一个文件中;问题不在于宏,这也是我的第一个猜测;宏正确展开 ( atan (2.5 * (180.0 / 3.14159265358979323846))
)。