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

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  回復  更多評論
  
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(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>
            久久男人资源视频| 欧美成人亚洲| 一区二区三区蜜桃网| 欧美日韩久久精品| 国产精品丝袜91| 在线午夜精品| 猛男gaygay欧美视频| 久久亚洲国产成人| 欧美日韩国产在线播放| 亚洲欧美国产精品专区久久| 午夜精品视频一区| 在线日韩中文| 在线亚洲伦理| 国外成人免费视频| 亚洲精品久久久久久一区二区| 欧美激情在线观看| 在线观看国产日韩| 亚洲精品少妇30p| 欧美在线综合视频| 亚洲黄色天堂| 亚洲自拍高清| 亚洲欧洲在线看| 午夜在线观看免费一区| 亚洲乱码国产乱码精品精 | 国产日韩欧美在线播放| 欧美v日韩v国产v| 国产精品视频网站| 91久久精品日日躁夜夜躁欧美| 国产精品一区二区久久国产| 欧美成人激情视频| 国产精品一区二区久久精品| 亚洲国产成人91精品| 夜夜嗨av一区二区三区四区| 黄色成人在线| 亚洲欧美怡红院| 一区二区三区成人| 老司机午夜精品视频| 欧美专区日韩专区| 欧美体内she精视频在线观看| 麻豆国产精品va在线观看不卡| 欧美日韩综合网| 一区二区日韩欧美| 国产精品一区二区在线观看不卡| 亚洲第一综合天堂另类专| 国产农村妇女精品一二区| 日韩午夜激情电影| 亚洲精品久久久久久下一站| 久久久在线视频| 久久久久成人精品| 国产一区二区精品久久99| 在线视频你懂得一区| 亚洲深夜福利在线| 99在线精品免费视频九九视| 亚洲伦伦在线| 欧美激情视频网站| 亚洲第一精品夜夜躁人人爽 | 欧美国产先锋| 欧美国产日韩a欧美在线观看| 国产专区综合网| 欧美在线免费看| 久久亚洲国产精品日日av夜夜| 国产精品一区二区a| 午夜精品久久久久久久久久久久| 亚洲欧美精品suv| 国产精品人人做人人爽人人添 | 久久久久九九视频| 国产专区一区| 久热精品视频在线| 亚洲国产成人精品视频| 日韩一级片网址| 免费视频一区| 国产亚洲欧美一级| 亚洲一区二区在线看| 香蕉乱码成人久久天堂爱免费| 国产精品高潮呻吟久久av无限 | 亚洲永久视频| 欧美性天天影院| 亚洲免费人成在线视频观看| 性xx色xx综合久久久xx| 国内久久精品| 蜜臀av在线播放一区二区三区| 欧美aa国产视频| 亚洲精品欧美| 国产精品入口日韩视频大尺度| 亚洲免费网站| 欧美丰满高潮xxxx喷水动漫| 99精品福利视频| 亚洲狼人综合| 国产欧美日韩激情| 亚洲免费婷婷| 免播放器亚洲一区| 99re6这里只有精品视频在线观看| 欧美精品一区二区三区久久久竹菊 | 亚洲欧美精品一区| 男人天堂欧美日韩| 亚洲无人区一区| 国产在线精品一区二区夜色| 欧美二区不卡| 亚洲伊人伊色伊影伊综合网| 国产精品免费看久久久香蕉| 欧美成人午夜| 亚洲精品国产精品久久清纯直播 | 欧美国产三级| 性久久久久久久久久久久| 欧美插天视频在线播放| 亚洲一区欧美| 樱桃国产成人精品视频| 欧美日韩在线一区| 久久亚洲综合色一区二区三区| 99视频+国产日韩欧美| 美女主播精品视频一二三四| 亚洲免费伊人电影在线观看av| 怡红院精品视频| 国产伦精品一区二区三区高清| 欧美成人一区二区在线| 欧美一区二区三区的| 日韩午夜电影av| 免费日韩精品中文字幕视频在线| 国内一区二区三区在线视频| 欧美日韩精品综合在线| 久久偷看各类wc女厕嘘嘘偷窃| 9i看片成人免费高清| 欧美国产极速在线| 久久久久久久久伊人| 亚洲视频专区在线| 亚洲精品国产视频| 亚洲第一视频| 国内外成人免费视频| 国产精品免费久久久久久| 欧美日本一区二区视频在线观看| 久久全球大尺度高清视频| 亚洲欧美日韩成人| 在线亚洲自拍| 在线视频精品一区| 99这里有精品| 亚洲欧美日本视频在线观看| 亚洲毛片av在线| 亚洲麻豆av| 一本色道久久综合狠狠躁的推荐| 欧美成人免费播放| 亚洲福利专区| 老鸭窝亚洲一区二区三区| 久久精品道一区二区三区| 欧美一区二区三区男人的天堂 | 亚洲乱码日产精品bd| 亚洲欧洲一区| 亚洲精品一区二区三区福利| 亚洲精品中文字幕在线| 日韩午夜剧场| 亚洲欧美在线视频观看| 久久成人一区| 免费国产一区二区| 欧美日韩精品二区| 国产精品日韩欧美一区二区三区| 国产精品亚洲综合色区韩国| 国产一区二区在线观看免费| 在线观看欧美日韩| 99www免费人成精品| 亚洲一区二区在| 久久精品道一区二区三区| 免费成人美女女| 欧美日本不卡视频| 午夜精品国产更新| 香蕉久久精品日日躁夜夜躁| 性欧美暴力猛交另类hd| 久久亚洲一区二区三区四区| 欧美a级一区| 一本久道综合久久精品| 羞羞漫画18久久大片| 久久网站热最新地址| 欧美日韩精品在线| 国模吧视频一区| 日韩视频二区| 亚洲国产天堂久久国产91| 国内精品视频在线播放| 99天天综合性| 久久久久久综合| 亚洲精品一区在线| 欧美在线网站| 欧美日韩在线播放三区| 精品51国产黑色丝袜高跟鞋| 宅男在线国产精品| 美女精品视频一区| 亚洲性感激情| 欧美电影美腿模特1979在线看| 国产精品一二一区| 欧美国产亚洲另类动漫| 国产精品高潮在线| 国产一区二区三区av电影| 亚洲激情偷拍| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产精品悠悠久久琪琪| 激情av一区二区| 亚洲午夜激情网站| 亚洲福利视频二区| 欧美资源在线观看| 国产精品乱人伦中文| 一区二区三区 在线观看视频 | 欧美天天影院| 亚洲人成高清|