有趣的EVC4.0MIPSII编译器优化bug

在EVC4.0环境下使用MIPSII编译器时,特定代码片段会在默认优化设置下导致字符转换异常,将ABC错误显示为小写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//========================================================================
//TITLE:
//    有趣的EVC4.0MIPSII编译器优化bug
//AUTHOR:
//    norains
//DATE:
//    Friday  21-December-2007
//Environment:
//    EVC4.0 + SDK-WINCE5.0-MIPSII
//    VS2005 + SDK-WINCE5.0-MIPSII   
//======================================================================== 

    在写代码时偶然发现的,大家都来乐一乐.
   
    首先必要的前提条件是,你是采用MIPSII来编译,
   
    有这么一段简单的代码,大家凭直觉看看应该显示的是什么: 
    int WINAPI WinMain(    HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPTSTR    lpCmdLine,
                    
int       nCmdShow)
    {
        _tcslwr(TEXT(
"ABC"));
    
        TCHAR 
*pszInfo = new TCHAR[_tcslen(TEXT("ABC")) + 1];    
        _tcscpy(pszInfo,TEXT(
"ABC"));    
        MessageBox(NULL,pszInfo,TEXT(
""),MB_OK);
        delete []pszInfo;
    
        
return 0;
    }
    

   直觉告诉我们,显示的应该是"ABC". 恩,只是在evc4.0环境下,这个却就不全对了,如果你选择的是编译Release版本,并且优化选项为"Default"(也就是你在evc什么都没改时的默认设置),那么结果将是(如图):

    
    呵呵,变成小写了.如果你的优化选项为其它,比如Maximize Speed等,都不会出现此灵异事件.
   
    当然了,如果你选择的是别的CPU来进行编译,甚至是自带的标准模拟器,也不会查看到该灵异事件,因为在_tcslwr(TEXT("ABC")这个语句就已经出现内存溢出异常了(其实出现异常才是正确的)!而用MIPSII编译器进行编译,不但能够顺利通过,运行还正常,甚至选择MIPS默认优化还能有趣地出现灵异现象,实在不能不佩服微软在EVC4.0 MIPSII编译器的造诣啊 :-)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值