大規模なプロジェクトでトリガーエラーを再現する次の小さなプログラムがあります。
#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))
)。