读书人

遇到一个足够妖的有关问题借这里人气

发布时间: 2013-03-01 18:33:02 作者: rapoo

遇到一个足够妖的问题,借这里人气请教下
本帖最后由 jiaoyun007 于 2013-02-16 10:26:45 编辑 在VxWorks下遇到一个很有意思的问题,就是定义了一个宏:

typedef enum
{
LOCAL = 0,
INCOMING = 1,
OUTGOING = 2
} MODE_t;

,如上面所示,然后在一个函数中用到它,代码内容如下:

...
if (pCb->mode == LOCAL)
{
...
}
...
,在这里经查看打印,pCb->mode的内容是0,但是进不去这个if语句后面花括号里的代码,再加打印发现,调用此函数之前和之后,LOCAL的值都是0,一进入此函数,LOCAL的值就变成1了,但是并没有在哪里修改LOCAL这个宏的值

同样的代码在Simulator上运行就没有问题,不过底层代码是Windows的

我猜会不会是编译优化引起来的,大家帮助分析下

顺祝各位新年愉快,谢谢各位! 编译优化 windows
[解决办法]
coredump看下汇编代码
[解决办法]
条件断点 - -
[解决办法]
VxWorks是收费的,应该提供服务

读书人网 >C语言

热点推荐