gpt4 book ai didi

c - GCC 编译时浮点优化

转载 作者:太空狗 更新时间:2023-10-29 15:02:48 25 4
gpt4 key购买 nike

我正在为 AVR 平台开发,我有一个问题。我不希望浮点库与我的代码链接,但我喜欢模拟值范围为 0.0 ... 1.0 而不是 0...255 和 0...1023 的概念,具体取决于偶数我是将端口用作输入还是输出。

所以我决定将输入/输出函数的参数分别乘以 1023.0 和 255.0。现在,我的问题是:如果我像这样实现除法:

#define analog_out(port, bit) _analog_out(port, ((uint8_t)((bit) * 255.0)))

GCC(打开 -O3 标志)是否会将在编译时已知并转换为整数类型的编译时浮点乘法优化为整数运算? (我知道当使用这些带有非常量参数的宏时,优化是不可能的;我只是想知道在其他情况下是否会完成。)

最佳答案

如果您将 bit 作为数字文字提供,GCC 应该始终进行常量折叠。如果您希望编译器强制执行 constness,您可以这样处理:

#define force_const(x) (__builtin_choose_expr(__builtin_constant_p(x), (x), (void)0))
#define analog_out(port, bit) _analog_out(port, force_const((uint8_t)((bit) * 255.0)))

关于c - GCC 编译时浮点优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com