对宏执行除数和舍入以降低数字的正确方法是什么?
我正在尝试这样做:
#define TOTAL_NUM_FFTS (int) NO_SAMPLES / FFT_SIZE
但是我收到一条警告,说明该宏的重新定义无法重复,编译器将该行重述为:
#define TOTAL_NUM_FFTS(int) NO_SAMPLES / FFT_SIZE
没有TOTAL_NUM_FFTS和(int)之间的空格。
感谢您的帮助!
答案 0 :(得分:11)
#define TOTAL_NUM_FFTS ((int) (NO_SAMPLES) / (FFT_SIZE))
预处理器think(int)是宏的参数。
定义宏时,尽可能多地使用括号。例如,想想如果有人将FFT_SIZE定义为2 + 3会发生什么。不是除以5,而是除以2然后加3。
答案 1 :(得分:1)
要检查的几件事情:
答案 2 :(得分:0)
要进行除法,可以使用math.h库中可用的pow(base,exponent)函数。 我想你必须实现类似的东西,
#define C A/B //B!=0
然后使用以下内容代替它:
#define C A*pow(B,-1)