【发布时间】:2015-04-09 11:43:52
【问题描述】:
我面临一个非常奇怪的问题。
- 我有一个 if 条件:
if((IN_SYNC == sync_flag) || (cycle_number == spi_slot_number))
在条件之前,变量“spi_slot_number”为'7',在if条件之后变为'0'(即“cycle_number”的值)!!!
有没有人知道怎么会发生这种事?!
重要提示:
1- 我的代码是 C 语言的。
2- 我检查了条件前后的堆栈,以确保没有发生堆栈损坏。
3-我的程序是一个线程程序,所以没有中断或其他线程可以中断。
4- 如果我注释了 if 条件,一切都会好起来的。
5-我不知道如何生成汇编代码...
【问题讨论】:
-
这通常来自未定义的行为和/或线程问题。
-
我们需要更多代码,而不仅仅是
if声明。 -
发布更多代码。我绝对不相信。
-
我会解决您对调试器对发布优化代码的误解的困惑。
-
请添加
printf说明您的问题的语句。另外,请尽量减少您的代码,以便问题仍然存在(制作minimal, complete, and verifiable example)。另外,请更新您的问题 -if(cycle_number == spi_slot_number)没有出现在“确切代码”中。