青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

勤能補(bǔ)拙,Expter

成都游戲Coder,記錄游戲開(kāi)發(fā)過(guò)程的筆記和心得!

關(guān)于 warning C4715問(wèn)題。

介紹:
 
   關(guān)于warning C4715:not all control paths return a value
  (不是所有的控件路徑都返回值).

問(wèn)題:
    一個(gè)函數(shù),不是所有路徑都有返回值,如下:

    1) 基本數(shù)據(jù)類型
    對(duì)于函數(shù)的并不是每個(gè)分支都有返回值,那么這樣警告會(huì)提示不是所有路徑都有返回值。

int   test( int value )
{
     
if ( value > 0 ) return value;
}


   調(diào)用 int value = test( -1 );

   看下test的匯編代碼.

關(guān)于8個(gè)程序寄存器一般只有esp寄存器作為入棧,出棧,調(diào)用和返回指令作為棧指針,其余

比如eax,exc等寄存器都沒(méi)有固定的含義和固定值.
看下面test匯編代碼.
int   test( int value )
{

; 4個(gè)寄存器入棧
; ebp 用于存放函數(shù)棧的棧頂指針
; esp 用于存放函數(shù)棧的棧底指針

004113A0  push        ebp              ;將寄存器ebp的內(nèi)容壓入程序棧
004113A1  mov         ebp,esp             ;保留esp寄存器
004113A3  sub         esp,0C0h             ;為該函數(shù)留出臨時(shí)存儲(chǔ)區(qū)
004113A9  push        ebx  
004113AA  push        esi  
004113AB  push        edi  

; 用0CCCCCCCCh初始化堆棧                
004113AC  lea         edi,[ebp
-0C0h]        ;lea直接尋址
004113B2  mov         ecx,30h             ;利用編譯器的offset立即尋址
004113B7  mov         eax,0CCCCCCCCh         ;eax
=0CCCCCCCCh
004113BC  rep stos    dword ptr es:[edi]     ;根據(jù)edi的大小來(lái)重復(fù)指令執(zhí)行次數(shù)

; 如果 cmp為真則把value的值保存到eax寄存器中
; 否則跳轉(zhuǎn)到地址4113C7h,并沒(méi)有對(duì)eax做處理

     
if ( value > 0 ) return value;
004113BE  cmp         dword ptr [value],
0 
004113C2  jle         test
+27h (4113C7h) 
004113C4  mov         eax,dword ptr [value] 
}


;各指針出棧,對(duì)應(yīng)前面3條push

004113C7  pop         edi              ;彈出edi
004113C8  pop         esi              ;彈出esi
004113C9  pop         ebx              ;彈出ebx
004113CA  mov         esp,ebp             ;把esp重新指向ebp(函數(shù)棧的棧頂指

針,test函數(shù)棧頂)
004113CC  pop         ebp              ;ebp重新指向test調(diào)用函數(shù)返回地址
004113CD  ret


調(diào)用匯編代碼

int value = test ( 1 );
004113FE  push        
1    
00411400  call        test (4110AFh) 
00411405  add         esp,4             ;Call test 函數(shù)時(shí)將壓入棧數(shù)據(jù),

由于只有一個(gè)參數(shù),所以只有4字節(jié)
00411408  mov         dword ptr [value],eax 

當(dāng)test 調(diào)用小于0時(shí)最后value指向的eax是一個(gè)0CCCCCCCCh,而對(duì)于基本數(shù)據(jù)類型大多value得到的是0CCCCCCCCh值.
如果我們的test函數(shù):

int   test( int value )
{
     
if ( value > 0 ) return value;
     
return 0;
}

那么匯編代碼會(huì)如下:

     if ( value > 0 ) return value;
004113EE  cmp         dword ptr [value],
0 
004113F2  jle         test
+29h (4113F9h) 
004113F4  mov         eax,dword ptr [value] 
004113F7  jmp         test
+2Bh (4113FBh) 
     
return 0;
004113F9  xor         eax,eax   ;將eax清零,作為返回值



   2 )如果返回的是一個(gè)引用對(duì)象
    

obj &  test( type value )
{
    
if( type2 ) return obj;
}


obj 
& ob = test( type1 );

   如果ob是個(gè)空引用的話,就出出錯(cuò),關(guān)于這種出錯(cuò)是否可以通過(guò)什么方式避免呢?

   我覺(jué)得warning C4715就應(yīng)該是error C4715.讓開(kāi)發(fā)者從最開(kāi)始就避免這種錯(cuò)誤的發(fā)生。

 

posted on 2011-04-09 12:52 expter 閱讀(5872) 評(píng)論(3)  編輯 收藏 引用 所屬分類: 工作筆記生活筆記算法與數(shù)據(jù)結(jié)構(gòu)

評(píng)論

# re: 關(guān)于 warning C4715問(wèn)題。 2011-04-09 13:33 Kevin Lynx

最后一個(gè)例子代碼有點(diǎn)問(wèn)題吧?可以讓編譯器將部分警告視為錯(cuò)誤。
00411405 add esp,4 ;Call test 函數(shù)時(shí)將壓入棧數(shù)據(jù)
準(zhǔn)確的說(shuō)這條語(yǔ)句是恢復(fù)堆棧,因?yàn)橹暗膒ush 1。默認(rèn)的cdecl調(diào)用約定是調(diào)用者平衡堆棧。

win32匯編里約定eax作為返回值寄存器。  回復(fù)  更多評(píng)論   

# re: 關(guān)于 warning C4715問(wèn)題。 2011-04-09 22:40 expter

@Kevin Lynx
最后一個(gè)例子代碼有點(diǎn)問(wèn)題吧?
有撒問(wèn)題啊?

Obj & test( type value )
{
static Obj obj;
if( type2 ) return obj;
}

即使不是引用
obj ob = test( type1 );
這樣也是錯(cuò)的。  回復(fù)  更多評(píng)論   

# re: 關(guān)于 warning C4715問(wèn)題。 2011-04-10 19:25 Kevin Lynx

@expter
我指的是你文章里的test沒(méi)有static Obj obj這句。  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产女精品视频网站免费 | 亚洲国产日韩综合一区| 日韩网站在线观看| 日韩视频免费大全中文字幕| 亚洲午夜免费视频| 久久久av水蜜桃| 欧美大片在线看免费观看| 美女精品国产| 一本色道久久综合亚洲精品不| 亚洲午夜视频在线观看| 久热成人在线视频| 欧美视频手机在线| 亚洲成人在线免费| 亚洲欧美在线高清| 欧美激情视频在线播放| 先锋影音一区二区三区| 欧美激情亚洲综合一区| 国内成人精品视频| 亚洲午夜精品在线| 亚洲国产天堂久久综合网| 亚洲欧美日韩综合国产aⅴ| 欧美日韩国产免费| 亚洲三级性片| 麻豆精品视频| 久久精品国产99国产精品| 国产精品福利影院| 亚洲国产精品精华液网站| 欧美在线一二三四区| 一区二区三区四区五区精品视频| 久久久欧美一区二区| 激情视频一区二区| 久久不射电影网| 午夜精品久久久久久久99热浪潮| 欧美午夜电影在线观看| 亚洲一区二区三区高清| 亚洲欧美日韩国产中文在线| 国产日本精品| 欧美高清视频免费观看| 免费亚洲婷婷| 日韩视频国产视频| 亚洲片在线观看| 欧美午夜片在线免费观看| 午夜久久福利| 久久日韩精品| 亚洲视频欧美视频| 亚洲欧美春色| 亚洲高清在线视频| 亚洲美女视频在线观看| 国产伦精品一区| 国产精品入口日韩视频大尺度| 久久精品国产99国产精品澳门| 麻豆视频一区二区| 亚洲自拍三区| 久久久噜噜噜久久狠狠50岁| 国产精品99久久久久久www| 亚洲专区一二三| 91久久午夜| 欧美在线日韩| 亚洲欧美日韩在线播放| 久久综合久久综合九色| 性欧美精品高清| 欧美精品v日韩精品v韩国精品v| 欧美中文在线视频| 欧美裸体一区二区三区| 久久精品一区蜜桃臀影院| 欧美激情综合在线| 另类尿喷潮videofree| 欧美亚洲成人免费| 亚洲人在线视频| 日韩小视频在线观看| 久久香蕉精品| 欧美成人国产| 国产最新精品精品你懂的| 亚洲已满18点击进入久久| 99视频精品| 欧美激情精品久久久久久免费印度| 久久久久久久久久久久久女国产乱 | 久久久在线视频| 久久久久高清| 亚洲国产精品成人| 蜜桃久久av一区| 亚洲欧洲另类国产综合| 一区二区三区免费观看| 欧美色视频在线| 亚洲一区二区三区高清不卡| 午夜一级在线看亚洲| 国产亚洲aⅴaaaaaa毛片| 午夜在线视频一区二区区别| 久久精品综合| 亚洲欧洲精品一区| 欧美日韩视频在线一区二区| 亚洲一线二线三线久久久| 欧美在线播放高清精品| 黄色av成人| 欧美日韩国产麻豆| 欧美主播一区二区三区美女 久久精品人 | 亚洲欧洲日本专区| 国产精品成人播放| 久久精品国产久精国产爱| 欧美国产另类| 欧美在线视频观看| 亚洲日韩视频| 国产婷婷97碰碰久久人人蜜臀| 米奇777在线欧美播放| 亚洲永久网站| 亚洲激情av在线| 久久久久一区二区三区四区| 一区二区三区欧美亚洲| 在线播放中文一区| 国产九区一区在线| 欧美激情第一页xxx| 蜜臀99久久精品久久久久久软件| 一本色道久久99精品综合| 毛片一区二区| 欧美一区二区三区四区视频| 国产精品99久久久久久久女警| 国内一区二区三区在线视频| 欧美日韩精品免费观看视频| 欧美成人网在线| 久久久精品tv| 久久黄色网页| 久久国产精品72免费观看| 这里只有精品丝袜| 亚洲私人影院| 欧美在线高清视频| 欧美在线视频一区二区| 久久福利资源站| 久久精品欧美日韩精品| 久久噜噜噜精品国产亚洲综合| 久久久久www| 男女精品网站| 欧美日韩福利在线观看| 欧美视频免费在线观看| 国产日产欧美一区| 国产在线不卡| 99re国产精品| 免费的成人av| 欧美三级网址| 国产欧美午夜| 亚洲理论在线| 午夜精品一区二区三区在线播放| 欧美一区影院| 欧美福利一区二区| 日韩性生活视频| 久久精品国产欧美亚洲人人爽| 欧美一区亚洲一区| 欧美精品三级在线观看| 国产精品尤物福利片在线观看| 最新国产精品拍自在线播放| 亚洲影院免费| 亚洲国产日韩美| 久久精品欧美日韩| 国产精品久久二区二区| 亚洲激情精品| 久久字幕精品一区| 亚洲午夜影视影院在线观看| 欧美va天堂在线| 黄色成人在线免费| 久久国产精品一区二区| 一本久久精品一区二区| 欧美高清在线| 亚洲日本无吗高清不卡| 久久在线免费观看| 久久精品1区| 极品日韩久久| 久久频这里精品99香蕉| 欧美一区二区啪啪| 国产精品自拍小视频| 香蕉国产精品偷在线观看不卡| 亚洲欧洲日本一区二区三区| 欧美精品久久久久久久久久| 日韩亚洲精品电影| 亚洲精品系列| 欧美色区777第一页| 亚洲午夜精品一区二区| 宅男噜噜噜66一区二区66| 国产精品综合久久久| 久久久久久午夜| 欧美96在线丨欧| 亚洲视频中文字幕| 久久国产66| 99精品久久久| 亚洲欧美国内爽妇网| 尤物精品国产第一福利三区| 亚洲国产另类久久精品| 国产精品a久久久久| 美女网站在线免费欧美精品| 欧美激情一区二区三区蜜桃视频 | 午夜一级在线看亚洲| 亚洲国产精品v| 国产精品99久久不卡二区| 国产一区二区福利| 亚洲国产精品久久久久婷婷老年| 欧美婷婷在线| 免费观看在线综合| 国产精品久久久对白| 免费成人小视频| 国产精品视频专区| 欧美激情一区二区三区在线| 国产精品久久综合|