流云

风驰影跃长 月映霜华裳
随笔 - 23, 文章 - 6, 评论 - 53, 引用 - 0

导航

<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(0)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

东观沧海

云散之处

搜索

最新评论

阅读排行榜

评论排行榜

遇到一个莫名的错误


昨天发现在一个函数里插入一段if..else if..else if...的代码后居然就不能正常运行了,后来将可能冲突的变量名全换了,插入的代码也写了一个函数代替,但问题依旧(实验很多次,仿真的时候一直都正常):
系统 : Vxworks
编译器 : Tornado2.0
语言 : C
编译含有下面2个函数的工程,无错,但将程序烧录进去后就不能正常运行了,LCD点亮后无任何反应:
char reg_select(int val)
{
 if(val<950)
  return 1; 
/* ... */
}
void  set_freq(unsigned int val)
{
 ...
 /*
 if(reg_select(val))
  return;
 */
 ...
}
发现将reg_select函数整个注释掉或者把reg_select()里的if语句换成if(1)就能正常运行.
因为reg_select()并没有被调用过(有一处,但注释了),即使是set_freq()也并未在启动时调用,调用是放在某次按键处理里的.
在主函数里加上串口打印,然后发现根本没有串口信息输出,就是说主函数都没能运行起来。。
其实,从前面就应该可以知道应该是编译出错了(偶早就怀疑是编译器的问题了,只是用的是啥版,也就不好说啥了@@).
...
弄了一天也没整对,最后没法子,干脆把代码放到Tornado2.2上面去编译------->居然就运行正常了!!!

posted on 2006-07-06 16:28 流云 阅读(2131) 评论(0)  编辑 收藏

评论

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]