内联 if (?:) 在 _delay_us() 中不起作用

发布于 2025-01-02 11:54:22 字数 307 浏览 0 评论 0原文

当我尝试在 1-Wire 实现中使用 _delay_us(condition ? value_if_true : value_if_false) 时,延迟不起作用,并且我的设备没有得到任何答复,但当我替换时它工作正常它与:

if(condition) _delay_us(value_if_true);
else _delay_us(value_if_false);

当我在液晶显示器上显示内联 if 值时,它显示正确的值。

那么这两种表示法有什么区别呢? 如果在 _delay_us() 中工作,我该如何进行内联?

When I'm trying to use _delay_us(condition ? value_if_true : value_if_false) in my 1-Wire implementation, delay doesn't work and i get no answer from my device, but it works fine when i replace it with:

if(condition) _delay_us(value_if_true);
else _delay_us(value_if_false);

When i displaying inline if value on lcd it shows the correct value.

So what's the difference between this two notations?
How can i make inline if work in _delay_us() ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烟火散人牵绊 2025-01-09 11:54:22

文档明确指出:

为了使这些函数按预期工作,必须启用编译器优化,并且延迟时间必须是编译时已知常量的表达式。如果不满足这些要求,由此产生的延迟将更长(并且基本上是不可预测的),并且不使用浮点计算的应用程序将因链接到应用程序的浮点库例程而经历严重的代码膨胀。

The documentation clearly says:

In order for these functions to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application.

月光色 2025-01-09 11:54:22

哎呀……完全是大错特错的想法,但把它们留在这里是为了提醒我在发帖前思考。

你需要: 条件? _delay_us(value_if_true) : _delay_us(value_if_false)

基本相同

与 if 语句的语法

(条件)?(评估条件是否为真):(评估条件是否为假)

Oops ... utterly offbase thoughts, but leaving them here to remind me to think before posting.

you need: condition ? _delay_us(value_if_true) : _delay_us(value_if_false)

basically the same syntax as the if statement

think

(condition)?(evaluate if condition was true):(evaluate if condition was false)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文