我正在尝试编写一些需要在浮点和定点环境中运行的 DSP 代码(数字类型将在编译时确定)。我想使用宏或 typedef 为特定的数字类型起别名。乘法、除法和其他数学函数在实现中会因数字类型而有很大差异,因此我需要某种开关来确定是否包含某些标头,并可能根据数字类型更改实现。
我将举一个简短的代码片段作为示例...
typedef samp_t float;
// or #define samp_t float (bad naming practice?)
// An alternative in fixed point
samp_t multiply_samp_t(samp_t a, samp_t b){
return a*b;
}
/* typedef samp_t int;
#define RADIX 24
samp_t multiply_samp_t(samp_t a, samp_t b){
return (samp_t) ((long) a)*((long) b) >> RADIX);
}
*/
void main(void){
samp_t a,b,c;
a = 15;
b = 27;
c = multiply_samp_t(a,b);
}
那么,如何根据 samp_t 的类型在两种不同的乘法函数之间切换呢?欢迎任何建议或建议。谢谢!-布兰特