1)我的C语言中有很多常量。 2)我的代码可以在浮点和定点中工作。静态初始化一个变量(在编译时)
现在,这些常量由一个函数float2fixed初始化,因此在浮点时它不做任何事情,而在定点时,它找到它们的定点表示。例如,如果工作在浮点,0.5f保留0.5f,而使用pow()子程序,如果工作在定点并且定点表示为Qx.16,则变为32768。
这很容易维护,但实际上需要花费很多时间来计算定点中的这些常量(pow是一个浮点函数)。在C++中,我会使用一些元编程,因此编译器会在编译时计算这些值,所以在运行时没有任何问题。但在C中,这是不可能的。或者是?任何人都知道这样的伎俩?任何编译器都足够聪明来做到这一点吗?
期待任何答案。
A
为什么你不能只使用C++? – Zifre 2009-06-10 23:01:57
C不支持预处理器宏? – CookieOfFortune 2009-06-10 23:02:58
@CookieOfFortune:宏几乎不像C++模板那么强大(它们甚至不是图灵完整版),但它可能是可能的。 – Zifre 2009-06-10 23:06:53