浮動小数点環境と固定小数点環境の両方で実行する必要がある 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 の型に基づいて、2 つの異なる乗算関数をどのように切り替えるのでしょうか? 推奨事項や提案は大歓迎です。ありがとう!-ブラント