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

posts - 16,  comments - 34,  trackbacks - 0

一、依據

C++標準規定:main函數可以省略返回語句,等效于返回0。

5. A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument.
If control reaches the end of main without encountering a return statement, the effect is that of executing
return 0;

                ——ISO C++03 3.6.1 Main function p44/72
                ——ISO C++98 3.6.1 Main function p43/69

注意:
1. main函數的返回類型是int, 不是void或者其他類型。
2. 該規則僅僅對main函數適用。
3. 對其他函數,如果省略返回值, 將得到一個警告
4. 應該避免3的情況。




二、 示例

        二、1. 一個合法的最小化的完整C++程序如下:
int main() {}

        二、2. 省略的確切含義

同時,標準中的用語是很考究的:
“當控制到達main結束處時沒有遇到return語句,效果與返回0相同”。

即是說,標準規定的是“對省略return的分支,認為返回0”。
同時,標準也允許其他分支含有返回語句。
如下:
int main(int argc,char* []) {
    
switch (argc)
    {
    
case 1:
        
// error, should passing argument
        return -1;
        
// parse arguments
    default:
    
case 3// parser argv[2]
    case 2// parser argv[1]
        ;
    }
    
// do some work
    
// control reaches here
}

沒有輸入命令行參數時, 返回一個錯誤。
其他情況,當控制達到main的結尾處時,效果同return 0;

        二、3. 對于其他函數,沒有這種“優待”
如:
int not_main(int argc) {
    
if (argc<=1)
        
return -1;
}
int main(int argc,char* []) {
    
return not_main(argc);
}

not_main無疑將得到一個警告。
程序在沒有輸入命令行參數時的返回值將無法預知



三、驗證

        三、1. ERRORLEVEL

windows下,可以通過 %ERRORLEVEL% 查詢上一次程序返回值。

結果與判斷相吻合:
1. minimalist有確定的返回值0
2. omit_return_in_main有確定的返回值-1或0
3. 對omit_return_in_other
3.1 有命令行參數時,返回值確定為0。
3.2 無命令行參數時,返回值無法預知


        三、2 匯編代碼

更嚴謹的驗證方法是查看匯編代碼。

可以看到,在minimalist與omit_return_in_main的main函數中都有將eax置0的代碼。
在omit_return_in_other中的not_main函數中,沒有這樣的代碼。




四、 例外

VC6在這點上與標準不符。

        四、1. 對omit_return_in_main,它給出的警告:

warning C4715: 'main' : not all control paths return a value

說明它在這點上與標準不符。
顯然,在有命令行參數的時候,程序結果無法預知


        四、2. 對minimalist,它給出的警告很搞笑:

warning C4508: 'main' : function should return a value; 'void' return type assumed

暴露出它另一個與標準不符的地方——main返回void。
顯然,任何情況下,程序結果都無法預知

        四、3. 對omit_return_in_other,是程序員的錯誤。




五、 實踐

不知道為什么C++標準在這里開一個“后門”。
——C++在許多地方都是很嚴謹的。

在實際應用中,盡量不要采用這一特性, 因為:
1. 舊編譯器不支持
2. C不支持——如果希望main能同時按C語言編譯的話

對于演示用的C++代碼,與主題無關的代碼行能省則省,則可以使用這一特性。
比如:C++標準中的示例代碼幾乎都采用了這一特性。
由此可得出,C++標準在這里開后門的原因是——讓C++標準更薄^_^



相關鏈接:

——示例代碼
http://immature.googlecode.com/svn/trunk/iMmature/sample/omit_return_in_main



Creative Commons License
作品采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。

轉載請注明 :
文章作者 - OwnWaterloo
發表時間 - 2009年04月26日
原文鏈接 - http://www.shnenglu.com/ownwaterloo/archive/2009/04/26/omit_return_in_main.html

posted on 2009-04-26 14:37 OwnWaterloo 閱讀(3488) 評論(1)  編輯 收藏 引用

FeedBack:
# re: main函數中省略返回語句[未登錄]
2013-04-14 23:22 | null
LOL  回復  更多評論
  
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(8)

隨筆檔案(16)

鏈接

搜索

  •  

積分與排名

  • 積分 - 198759
  • 排名 - 134

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜在线一区二区| 日韩小视频在线观看| 性欧美video另类hd性玩具| 一区二区免费在线观看| 欧美午夜剧场| 久久精品综合| 久久综合一区| 一本色道久久88综合日韩精品| 亚洲黄一区二区三区| 欧美日本国产一区| 久久激情中文| 欧美成年人视频网站| 一区二区免费在线视频| 亚洲欧美日韩综合国产aⅴ| 激情亚洲一区二区三区四区| 亚洲国产精品ⅴa在线观看| 欧美午夜一区| 麻豆精品在线观看| 欧美特黄a级高清免费大片a级| 欧美专区在线| 欧美精品观看| 久久久999成人| 欧美日韩免费在线视频| 久久久之久亚州精品露出| 欧美精品免费在线| 久久久精品动漫| 欧美日韩性视频在线| 久久影音先锋| 国产精品欧美日韩久久| 欧美福利影院| 国语自产在线不卡| 亚洲视频在线观看一区| 亚洲国产欧美另类丝袜| 欧美一区午夜精品| 亚洲男人天堂2024| 欧美激情bt| 免费av成人在线| 国产精品入口日韩视频大尺度| 亚洲国产精品123| 韩国v欧美v日本v亚洲v| 亚洲视频一区| 亚洲视频一二三| 欧美成人午夜激情视频| 久久久久国产精品一区三寸| 国产精品videosex极品| 亚洲国产视频直播| 在线日韩日本国产亚洲| 欧美一区二区三区四区在线观看 | 欧美+日本+国产+在线a∨观看| 午夜精品国产精品大乳美女| 欧美日韩国产美女| 亚洲精品中文字| 日韩视频精品在线| 免费亚洲一区二区| 欧美电影免费观看| 亚洲国产成人精品久久久国产成人一区| 亚洲天堂网在线观看| 亚洲一区二区三区久久| 欧美日韩国产电影| 亚洲美女区一区| 一本一本久久a久久精品综合麻豆| 老色批av在线精品| 欧美高清视频| 亚洲精品久久久久久久久久久久| 久久婷婷av| 欧美国产日韩精品| 亚洲精品一区二区三区不| 欧美大片第1页| 国产精品视频不卡| 免费成人美女女| 亚洲国产成人高清精品| 另类成人小视频在线| 亚洲国产成人精品视频| 99伊人成综合| 欧美性久久久| 性色一区二区| 欧美电影免费观看网站| 日韩午夜视频在线观看| 欧美日韩一区免费| 午夜精品一区二区三区在线| 久久精品国产亚洲5555| 在线观看成人小视频| 欧美极品一区| 亚洲一区二区毛片| 久久婷婷国产综合精品青草| 亚洲国产欧美在线人成| 欧美日韩亚洲一区二区三区四区| 亚洲一区视频在线观看视频| 久久久精品日韩欧美| 91久久精品视频| 国产精品乱码人人做人人爱| 久久精品麻豆| 日韩视频一区二区三区| 久久久精品久久久久| 日韩视频在线一区二区三区| 国产精品乱码| 男人的天堂亚洲在线| 一本大道久久精品懂色aⅴ| 久久久久久久一区二区| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲一区二区三区涩| 在线播放亚洲一区| 国产精品久久久久免费a∨ | 欧美α欧美αv大片| 在线综合亚洲| 在线精品一区二区| 国产精品电影网站| 欧美成人高清视频| 性亚洲最疯狂xxxx高清| 亚洲精品国产欧美| 久久综合一区二区| 午夜久久tv| 一区二区国产精品| 亚洲第一免费播放区| 国产精品夜夜夜| 欧美精品1区2区| 久久黄色影院| 亚洲欧美自拍偷拍| 夜夜嗨av色一区二区不卡| 欧美成人小视频| 久久青草久久| 久久精品视频免费播放| 亚洲一区影音先锋| 一本综合久久| 亚洲美女诱惑| 亚洲国内自拍| 亚洲国产精品久久久久秋霞不卡| 国产欧美日韩一区二区三区| 欧美日韩一区二区免费视频| 欧美韩日一区二区| 欧美r片在线| 免费高清在线视频一区·| 久久国产日韩| 久久精品亚洲精品| 欧美一区二区三区四区在线观看| 亚洲欧美国产精品va在线观看| 一区二区三区欧美日韩| 日韩亚洲在线| 亚洲午夜激情| 久久久精品tv| 欧美日韩精品一二三区| 欧美一级片久久久久久久| 国产精品美女主播在线观看纯欲| 欧美激情一区二区三区| 久久久久女教师免费一区| 久久久国产午夜精品| 久久久一二三| 欧美激情国产日韩| 亚洲高清资源| 一本色道**综合亚洲精品蜜桃冫| 亚洲精品少妇| 亚洲男女自偷自拍| 久久激情视频| 免费在线播放第一区高清av| 男女精品网站| 欧美香蕉大胸在线视频观看| 国产精品久久久久国产a级| 国产精品国产三级国产aⅴ入口 | 国产精品v亚洲精品v日韩精品 | 韩国精品久久久999| 亚洲国产cao| 亚洲一区999| 欧美一区二区三区在线免费观看| 久久大逼视频| 亚洲第一搞黄网站| 一区二区国产日产| 久久国产日韩欧美| 欧美精品v日韩精品v国产精品| 国产精品国产精品国产专区不蜜| 国产欧美日韩一区| 亚洲欧洲在线看| 午夜精彩视频在线观看不卡| 久久久久久夜| 99re亚洲国产精品| 翔田千里一区二区| 嫩草成人www欧美| 国产精品免费aⅴ片在线观看| 精品999网站| 亚洲一区二区三| 欧美成人一区二区三区| 亚洲一区二区三区午夜| 美女视频黄a大片欧美| 国产精品乱码妇女bbbb| 亚洲欧洲一级| 久久视频国产精品免费视频在线| 亚洲国产清纯| 欧美亚洲一级片| 欧美色区777第一页| 国产精自产拍久久久久久| 亚洲国产欧美日韩| 久久久久久久久综合| 99热在这里有精品免费| 美女精品国产| 国外成人在线视频| 午夜一区不卡| 日韩一级在线| 欧美高清视频在线播放| 伊人夜夜躁av伊人久久| 欧美亚洲免费电影| 在线亚洲观看|