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

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 閱讀(3502) 評論(1)  編輯 收藏 引用

FeedBack:
# re: main函數中省略返回語句[未登錄]
2013-04-14 23:22 | null
LOL  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(8)

隨筆檔案(16)

鏈接

搜索

  •  

積分與排名

  • 積分 - 199096
  • 排名 - 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>
            久久最新视频| 欧美亚洲免费高清在线观看| 欧美影视一区| 亚洲精品综合精品自拍| 国产农村妇女精品一区二区| 欧美精品一区二区三区蜜臀| 久久久人成影片一区二区三区| 亚洲影音一区| 亚洲美女中出| 亚洲福利视频网| 久久久999成人| 午夜伦欧美伦电影理论片| 99精品99久久久久久宅男| 亚洲成人在线视频播放| 国产精品一区二区三区四区五区| 欧美激情网站在线观看| 久久久久久久久久码影片| 亚洲制服少妇| 99视频一区| 亚洲卡通欧美制服中文| 欧美激情在线| 欧美电影免费网站| 久久中文字幕导航| 久久一二三四| 久久男女视频| 久久天天躁夜夜躁狠狠躁2022| 欧美一区二区三区男人的天堂| 亚洲香蕉在线观看| 中文在线资源观看网站视频免费不卡| 亚洲久久在线| 99精品热视频| 一区二区三区视频免费在线观看| 日韩一级裸体免费视频| 99国产一区| 一区二区三区日韩欧美| 国产精品99久久久久久久vr| 日韩午夜激情| 亚洲夜晚福利在线观看| 亚洲视频观看| 新狼窝色av性久久久久久| 香蕉久久久久久久av网站| 欧美有码在线观看视频| 久久精品国产一区二区三区免费看| 欧美伊人久久久久久久久影院 | 国产麻豆成人精品| 国产日韩欧美黄色| 影音先锋在线一区| 亚洲黄色成人| 在线性视频日韩欧美| 亚洲一区三区在线观看| 亚洲欧美成人综合| 久久久久.com| 欧美激情亚洲精品| 日韩一级精品| 香蕉成人久久| 老色鬼久久亚洲一区二区| 欧美激情一区二区三区在线| 国产精品电影在线观看| 国产美女一区| 亚洲欧洲日本一区二区三区| 亚洲视频精选| 久久久久免费观看| 亚洲欧洲精品一区二区三区不卡 | 亚洲成色www久久网站| 亚洲日本乱码在线观看| 亚洲一级二级| 老牛嫩草一区二区三区日本| 欧美日韩一二区| 国产无一区二区| 日韩午夜在线电影| 久久国产欧美日韩精品| 亚洲高清一区二区三区| 一区二区三区 在线观看视频| 欧美一区二区三区免费观看视频| 欧美顶级艳妇交换群宴| 国产精品久久久久久久久久妞妞| 狠狠久久婷婷| 中文日韩欧美| 免费影视亚洲| 亚洲一区二区三区影院| 浪潮色综合久久天堂| 国产精品久久毛片a| 亚洲国产欧美一区二区三区同亚洲| 亚洲永久在线| 欧美黄色精品| 性欧美video另类hd性玩具| 欧美激情在线观看| 国产真实久久| 亚洲一区二区三区精品在线观看 | 久久免费99精品久久久久久| 亚洲黄色天堂| 久久久国产午夜精品| 国产精品ⅴa在线观看h| 最新亚洲视频| 久久婷婷久久一区二区三区| av成人天堂| 欧美大学生性色视频| 国产综合色产| 午夜精彩视频在线观看不卡| 亚洲国产精品久久久久秋霞不卡 | 亚洲激情网站| 久热精品视频在线观看一区| 亚洲一区三区视频在线观看| 欧美激情片在线观看| 永久久久久久| 久久精品五月婷婷| 亚洲女人av| 国产精品久久久久久久久果冻传媒| 亚洲人成在线观看网站高清| 久久资源在线| 欧美一区二区精品久久911| 国产精品高潮在线| 99视频精品全国免费| 亚洲二区三区四区| 久久婷婷蜜乳一本欲蜜臀| 国产一区二区精品在线观看| 亚洲欧美中文日韩v在线观看| 亚洲精品一区二区三区99| 欧美成人精品高清在线播放| 亚洲国产精品久久人人爱蜜臀| 另类人畜视频在线| 久久精品国产久精国产一老狼| 国产老女人精品毛片久久| 亚洲欧美www| 亚洲一区精品电影| 国产精品丝袜xxxxxxx| 午夜久久久久| 亚洲欧美在线x视频| 国产精品自拍小视频| 欧美有码在线视频| 欧美在线一级va免费观看| 国产色综合久久| 久久蜜桃精品| 久久先锋资源| 亚洲精品免费在线观看| 亚洲国产视频直播| 欧美日韩一区二区三区四区五区 | 欧美日韩国产精品一区二区亚洲| 亚洲国产精品专区久久| 亚洲国产成人av好男人在线观看| 欧美福利视频在线观看| 亚洲免费观看在线视频| 99精品欧美一区二区三区| 欧美性猛片xxxx免费看久爱| 性欧美暴力猛交69hd| 久久国产夜色精品鲁鲁99| 亚洲国产高清在线| 亚洲欧洲久久| 国产精品美女视频网站| 久久国产精品网站| 久久噜噜噜精品国产亚洲综合| 亚洲啪啪91| 一区二区三欧美| 国产亚洲人成网站在线观看| 欧美成人小视频| 欧美日韩免费一区| 香蕉成人伊视频在线观看| 久久久精品2019中文字幕神马| 亚洲国产片色| 亚洲天堂成人在线视频| 国产一区二区三区丝袜 | 欧美在线免费| 亚洲精品久久久久久久久久久久久| 亚洲精品国产精品久久清纯直播| 欧美午夜在线一二页| 欧美在线一级视频| 久久人91精品久久久久久不卡| 一本色道久久加勒比精品| 亚洲欧洲av一区二区| 亚洲激情精品| 亚洲欧美久久久| 亚洲欧洲日本mm| 亚洲欧美日韩国产中文在线| 亚洲黄网站黄| 亚洲欧美综合国产精品一区| 亚洲国产综合91精品麻豆| 99国产成+人+综合+亚洲欧美| 国产一区二区三区在线观看视频| 最新亚洲一区| 国内精品写真在线观看| 亚洲日本久久| 禁断一区二区三区在线| 这里只有精品丝袜| 亚洲激情视频在线播放| 亚洲欧美国产va在线影院| 日韩视频在线播放| 久久久久国色av免费看影院| 亚洲一区二区三区四区五区午夜| 久久久久久高潮国产精品视| 亚洲午夜精品久久久久久浪潮 | 亚洲全部视频| 欧美亚洲一区二区在线| 一区二区三区视频在线| 久久久亚洲一区| 欧美一二三视频| 欧美日韩亚洲免费| 亚洲高清不卡一区| 黑人操亚洲美女惩罚| 亚洲午夜精品久久久久久浪潮| 亚洲精品1区2区|