为宏执行除法和舍入以降低数字的正确方法是什么?
我正在尝试这样做:
#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。
关于c - MACROS - 如何实现除法然后舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548494/