0

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

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

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

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

4

2 回答 2

3

文档清楚地说:

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

于 2012-02-06T11:05:45.297 回答
0

哎呀......完全不合时宜的想法,但把它们留在这里是为了提醒我在发布之前要三思。

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

与 if 语句的语法基本相同

思考

(条件)?(判断条件是否为真):(判断条件是否为假)

于 2012-02-04T21:04:24.880 回答