hur.cn - 华软网

 热门搜索

遇到一个vc2002编译器的诡异问题

  作者:未知    来源:网络    更新时间:2011/10/4
一个函数,输入一个字符,然后根据这个字符进行分枝处理.开始我是这样写的:
int s(char* t)
{
    if(0==strcmp(t,"a")
      {
        ......
        return 1; 
      }

    if(0==strcmp(t,"b")
      {
        ......
        return 1; 
   
   }
    if(0==strcmp(t,"c")
      {
        ......
        return 1; 
      }

    if(0==strcmp(t,"d")
      {
        ......
        return 1; 
      }

     return 0;
}

    
怪就怪在,如果只有三个if块,则运行正常,但只要再加一个if块上去,函数就总是返回0.无论怎么调整都是如此,反正好象只能有个三个if块.最后没办法,改成switch结构,就运行正常了.
---华软 网友回答---
调试跟踪下看看,它在哪里返回了

---华软网友回复---
还有换个编译器试试

---华软网友回复---
找到原因了,是因为我这个函授开始还有一小段内联汇编.我发现内联汇编有时候会干扰VC代码生成.甚至会生成完全错误的代码.
看来内联汇编这个东西能不用就尽量不用,否则会遇到很多莫名其妙的问题.      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。