【发布时间】:2017-06-19 07:35:12
【问题描述】:
您如何区分代码中的各种 Qx 定点类型?
这样的事情可以接受吗:
typedef int32_t q31;
typedef int32_t q25;
typedef int32_t q23;
typedef int32_t q15;
然后(使用示例):
q23 x;
q23 y;
q31 out;
.
.
.
out = do_something_input_q23s_output_q31(x,y);
// etc.
上面的 typedef 有意义吗?什么是最合适的解决方案?
【问题讨论】:
-
并非如此 - 您不能在 32 位浮点数中指定超过 6 位小数。您在创建定点库吗?
-
抱歉,没听懂。
-
你想要多少类型的安全性?如果很多,您可以将类型包装到结构中,但代价是更笨拙的使用。
int32_t上的简单 typedef 不会为您购买任何编译时检查。在这种情况下,您可能会从匈牙利符号 described here 中受益更多。 -
是的,您会使用前缀更容易看到可能的错误。并且不要忘记转换函数
int q25New = q25Fromq23(q23Old);。但我会考虑使用比q23更具描述性的名称。 -
请注意,如果您确实使用匈牙利表示法,那些
typedefs 不一定是坏的,即使您没有得到太多编译器帮助。在不了解您的用例全貌的情况下,不可能给出一个真正的解决方案。
标签: c signal-processing fixed-point