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