gpt4 book ai didi

编译器忽略 if 语句

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:37 25 4
gpt4 key购买 nike

这可能是一个简单的问题,所以我希望你能指出正确的方向。

我正在用 C 编写一个简单的 IO 程序。在我的程序中间,我有一个永远不会执行的 if 语句。当我试图在 if 语句中放置一个断点只是为了让它自动删除并向下推过 if 语句 block 时,我意识到了这一点。更深入地研究这个问题,c 编译器不会为我的 if 语句创建任何汇编代码。以下是我的代码片段和程序集输出。

代码:

void sendData(unsigned int val1 ){
P1OUT |= 1;
if ((val1 & 0x8000 ) == 0x8000)
wait(T1H);
else
wait(T1L);
P1OUT &= ~(1);
}

*注意:是的,我确实有另一个称为 wait 的函数,它会延迟多个周期。

组装:

 13     P1OUT |= 1;
sendData():
c0ae: D3D2 0021 BIS.B #1,&Port_1_2_P1OUT
18 P1OUT &= ~(1);
c0b2: C3D2 0021 BIC.B #1,&Port_1_2_P1OUT

感谢您的帮助。

最佳答案

等待可能是一个正在优化的繁忙循环。我相信有一个很好的等待函数的例子,可以在示例代码中进行优化。

参见示例 http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/18638.aspx

关于编译器忽略 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944850/

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