MACROS - 如何实现除法然后舍入
对宏执行除法和舍入到较小数字的正确方法是什么?
我正在尝试这样做:
#define TOTAL_NUM_FFTS (int) NO_SAMPLES / FFT_SIZE
但我收到了该宏的不兼容重新定义的警告,并且编译器将该行重述为: #define TOTAL_NUM_FFTS(int) NO_SAMPLES / FFT_SIZE
TOTAL_NUM_FFTS 和 (int) 之间没有空格。
感谢您的帮助!
What is the proper way to perform a divide and round to lower number for a macro?
I am trying to do this:
#define TOTAL_NUM_FFTS (int) NO_SAMPLES / FFT_SIZE
but I am getting a warning of incompaitible redefinition of that macro and the compiler restates the line as:#define TOTAL_NUM_FFTS(int) NO_SAMPLES / FFT_SIZE
without the space between TOTAL_NUM_FFTS and (int).
Thanks for your help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
预处理器认为 (int) 是宏的参数。
定义宏时,请尽可能多地使用括号。例如,想象一下如果有人将 FFT_SIZE 定义为 2+3 会发生什么。您可以先除以 2,然后再加 3,而不是除以 5。
The preprocessor thinks (int) is a parameter to the macro.
When defining macros, use as many parentheses as you can. For example, think what will happen if someone defines FFT_SIZE as 2+3. Instead of dividing by 5, you'd be dividing by 2 and then adding 3.
需要检查的几件事:
Several things to check:
对于除法,您可以使用 math.h 库中提供的 pow(base, exponent) 函数。
我想你必须实现类似的东西,
然后使用以下代码代替它:
#define CA*pow(B,-1)
For dividing, you can use the pow(base, exponent) function available in math.h library.
I suppose you have to implement something like,
then instead of it use the following:
#define C A*pow(B,-1)