c - MACROS - 如何实现除法然后舍入

标签 c c-preprocessor

为宏执行除法和舍入以降低数字的正确方法是什么?

我正在尝试这样做:

#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/

相关文章:

c++ - 使用预处理器重新定义 for 循环

c++ - 在 Unix 中将 json 作为命令行参数传递

java - 将数据从 C 服务器代码发送到 java 客户端代码

c - 在数组中存储奇数和偶数

c - 如何使用以下预处理器语句

对 C 宏扩展和整数运算感到困惑

c - 使用预处理器避免读/写函数中的代码重复

c - #define 的数组格式(C 预处理器)

c++ - 迭代导致崩溃

c - 在不使用循环的情况下确定特定元素的数组索引