我能够用long double
‘S通过简单的搜索--用long double
代替double
--编译出xnec2c个.它可以正确计算,但使用格式说明符的地方除外,因为它需要%Lf
...当然,GCC在用这句俏皮话破解了它之后,对-Wformat=
大喊大叫:
perl -p -i -e 's/_Complex/complex/g; s/gdouble/double/g; s/([ \t(]|^)double/$1long double/g' src/*.[ch]
最终目标是:
- 用
typedef double xnec2c_double_t
代替所有的double
岁的S - 在
configure.ac
中提供一个./configure --enable-long-double
选项,将tyecif调整为long double
. - 不破百的S和相关的基于格式说明符的函数(如
sprintf
等).
Question:
让格式说明符在编译时 Select double
vslong double
的情况下工作的最佳实践是什么?
我可以在每一张输出周围加上#ifdef
英寸的S,或者将#define SPEC_DOUBLE "%Lf"
和串连在一起的字符串连为printf("foo=" SPEC_DOUBLE "\n", foo)
,但这似乎几乎和每printf
张左右加上#ifdef
英寸的S一样离谱.如果有一个优雅的方法,my_smart_printf
宏可能是一个 Select ,但我还没有想出一个.
有什么"好"的方法可以做到这一点吗?
请注意:(用谷歌翻译翻译)
- 我不想切换到C++.
- 这个问题不是关于汽车会议的.
- 我是xnec2c的维护者.