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

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://m.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>
            日韩一级欧洲| 久久精品99国产精品| 国产精品欧美日韩久久| 欧美日韩综合久久| 欧美另类变人与禽xxxxx| 欧美国产在线视频| 欧美日韩国产在线| 国产精品老牛| 欲色影视综合吧| 99精品久久久| 性18欧美另类| 欧美成人精品h版在线观看| 亚洲国产另类 国产精品国产免费| 久久久久se| 91久久极品少妇xxxxⅹ软件| 一本色道久久综合狠狠躁篇的优点| 中文av字幕一区| 久久视频在线视频| 欧美性感一类影片在线播放 | 亚洲国产精品99久久久久久久久| 黄色成人av在线| 亚洲一区二区伦理| 免费视频一区| 亚洲免费在线观看视频| 欧美精品一区二区久久婷婷| 欧美日韩国产区一| 亚洲欧洲日产国产综合网| 久久精品久久99精品久久| 亚洲午夜影视影院在线观看| 另类av一区二区| 国内精品久久久| 久久午夜羞羞影院免费观看| 亚洲手机在线| 国产亚洲观看| 久久久蜜桃精品| 久久性天堂网| 一本久道综合久久精品| 亚洲精品乱码久久久久久黑人| 久久精品一区| 亚洲国产另类久久精品| 亚洲美女视频网| 国产一区二区三区免费不卡| 欧美成人国产va精品日本一级| 久久亚洲精品一区二区| 亚洲精品欧美极品| 国产精品99久久久久久久女警| 国产老肥熟一区二区三区| 久久天堂成人| 欧美日韩中文字幕在线| 久久精品人人| 欧美日韩亚洲一区二区三区四区| 午夜精品美女久久久久av福利| 亚洲少妇最新在线视频| 一区二区欧美在线观看| 狠狠色狠狠色综合人人| 亚洲精品乱码久久久久久日本蜜臀| 国产精品美女一区二区在线观看| 欧美成年人视频网站| 欧美系列一区| 99re66热这里只有精品4| 一区免费观看| 午夜精品视频在线观看| 日韩手机在线导航| 久久精品视频播放| 亚洲欧美日韩国产一区| 国产精品va在线播放| 欧美大胆人体视频| 国产精品一二一区| 亚洲中无吗在线| 欧美一区二区精品| 欧美日韩午夜在线| 日韩视频免费在线观看| 牛人盗摄一区二区三区视频| 欧美激情一区三区| 免费欧美在线| 日韩视频一区二区三区| 欧美大片在线看| 亚洲清纯自拍| 国产精品视频大全| 久久综合给合| 在线不卡中文字幕| 欧美在线观看网站| 欧美xart系列在线观看| 亚洲区中文字幕| 国产精品无码永久免费888| 欧美一级成年大片在线观看| 欧美激情2020午夜免费观看| 一区二区日韩伦理片| 国产亚洲成精品久久| 欧美高清视频一区二区| 黄色成人在线网址| 午夜精品久久99蜜桃的功能介绍| 久久久xxx| 亚洲午夜在线观看视频在线| 国产欧美韩国高清| 欧美日韩美女在线| 老色鬼精品视频在线观看播放| 99视频+国产日韩欧美| 久久香蕉国产线看观看av| 亚洲夜间福利| 亚洲美女av网站| 伊甸园精品99久久久久久| 欧美性猛交xxxx免费看久久久| 久久久精品视频成人| 亚洲欧美另类国产| 亚洲一级二级| 亚洲一级网站| 亚洲调教视频在线观看| 亚洲老板91色精品久久| 亚洲国内精品在线| 亚洲国产精品久久久久秋霞蜜臀 | 麻豆91精品| 久久久国产成人精品| 久久久国产精彩视频美女艺术照福利| 一区二区三区免费在线观看| 亚洲日本久久| 一区二区成人精品| 羞羞视频在线观看欧美| 久久久久久亚洲综合影院红桃| 欧美在现视频| 欧美国产精品va在线观看| 欧美成人免费小视频| 欧美日韩视频在线观看一区二区三区| 欧美日本免费| 国产日韩av一区二区| 欧美一区二区三区精品电影| 在线视频亚洲| 亚洲精品一二区| 欧美成人免费全部| 亚洲国产毛片完整版 | 亚洲国产精品电影| av成人毛片| 久久综合亚州| 小辣椒精品导航| 欧美日韩精品一区| 在线日韩视频| 久久午夜色播影院免费高清| 亚洲视频 欧洲视频| 欧美成人69| 精品99一区二区| 久久成人av少妇免费| 99精品99| 国产精品久久久久久久久借妻| 91久久视频| 欧美激情一区二区久久久| 久久久久综合网| 在线欧美福利| 亚洲电影在线看| 欧美电影在线观看完整版| 亚洲精品一二三| 亚洲福利国产精品| 欧美激情第五页| 亚洲中无吗在线| 欧美一区二区三区电影在线观看| 国产日韩精品一区| 麻豆成人av| 欧美日韩亚洲不卡| 欧美在线亚洲综合一区| 午夜影院日韩| 亚洲国产va精品久久久不卡综合| 欧美91视频| 国产精品国产三级欧美二区 | 老鸭窝毛片一区二区三区| 久久av最新网址| 韩国成人精品a∨在线观看| 国产精品久久久久久影视| 久久国产高清| 欧美日本国产在线| 免费观看在线综合色| 国产精品毛片va一区二区三区 | 亚洲一区二区三| 欧美一区二区三区的| 亚洲精选在线| 亚洲免费在线视频一区 二区| 136国产福利精品导航网址应用 | 欧美在线观看视频| avtt综合网| 欧美1区2区视频| 久久婷婷成人综合色| 国产精品久久久久久久久久妞妞 | 久久久久久九九九九| 国产精品99久久久久久www| 蜜臀av国产精品久久久久| 久久se精品一区精品二区| 欧美精品激情在线观看| 欧美成人a视频| 国产一区日韩一区| 久久丁香综合五月国产三级网站| 亚洲欧美日韩一区二区三区在线| 欧美高清不卡| 亚洲国产精品久久久久久女王| 国产亚洲激情视频在线| 亚洲欧美日韩中文播放| 午夜精品亚洲| 国产一区二区你懂的| 久久精品免费播放| 美女黄色成人网| 一本色道久久88精品综合| 欧美成人精品影院| 亚洲美女诱惑|