亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4656 | 回復(fù): 6
打印 上一主題 下一主題

[C++] [結(jié)貼]C/C++的標(biāo)準(zhǔn),有沒(méi)有規(guī)定main函數(shù)必須返回一個(gè)整數(shù)? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-11-14 11:01 |只看該作者 |倒序?yàn)g覽
本帖最后由 sampher 于 2013-11-21 08:59 編輯

下面這樣的代碼把main聲明為void返回類型,在VC下是能編譯通過(guò)的,在GCC下編譯會(huì)提示main必須有返回值。

  1. void main(...){
  2. ...
  3. }
復(fù)制代碼
我想知道C/C++標(biāo)準(zhǔn)對(duì)此有規(guī)定嗎? 還是不同時(shí)期,不同版本的C/C++標(biāo)準(zhǔn),對(duì)此的規(guī)定都不同? 抑或是編譯器廠商自己決定的,main()的形式不在標(biāo)準(zhǔn)之內(nèi)?
5L版主給的回復(fù)應(yīng)該是最佳答案!
----------------------------------------------------------------------------------
main函數(shù)的返回值就是運(yùn)行其程序的這個(gè)進(jìn)程的狀態(tài)碼,命令行程序常常通過(guò)判斷相應(yīng)命令(進(jìn)程)的狀態(tài)碼來(lái)判斷相應(yīng)命令是結(jié)果是否正常,VC++是允許void main這種形式的程序入口原型的,之所以允許這么做是有歷史原因的,在最初的K&R C中main函數(shù)的原型為:main(),沒(méi)有對(duì)返回值和參數(shù)做出明確規(guī)定,為此存在不同main函數(shù)原型擴(kuò)展。K&R C第二版開始對(duì)此做出了更細(xì)致的規(guī)定,除了main()這樣的原型以外又加入了帶參數(shù)的原型:main(int argc, char *argv[]),又由于K&R C中允許Implicit declarations(未經(jīng)聲明而直接使用的將視為int類型,函數(shù)返回值也視為int)。main函數(shù)原型真正的定型是從C89(第一版ANSI C標(biāo)準(zhǔn))開始的,此標(biāo)準(zhǔn)明確了int main(void)和int main(int argc, char *argv[])這兩個(gè)原型,其它的原型是不允許的,考慮到對(duì)舊代碼的兼容問(wèn)題,許多編譯器也允許K&R C中的原型,不帶返回值類型的main視為void或int處理(由編譯器決定)。從此以后main逐漸的定型下來(lái),但部分編譯器依然存在不同的擴(kuò)展,比如說(shuō)帶有環(huán)境變量參數(shù)envp的擴(kuò)展?偠灾,使用main最好嚴(yán)格按照標(biāo)準(zhǔn)來(lái),否則代碼不能保證可移植性。


總之:標(biāo)準(zhǔn)C/C++都對(duì)返回值有要求,沒(méi)標(biāo)準(zhǔn)化之前的沒(méi)要求,很多編譯器為了兼容老代碼才允許了返回值原型為void的形式。

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [報(bào)告]
發(fā)表于 2013-11-14 16:35 |只看該作者
這個(gè)代碼 我gcc能編過(guò)并正常運(yùn)行。

論壇徽章:
11
巨蟹座
日期:2013-12-23 11:12:14雙子座
日期:2014-08-28 09:14:55子鼠
日期:2014-07-25 16:21:22摩羯座
日期:2014-07-23 15:17:47摩羯座
日期:2014-05-30 13:09:05午馬
日期:2014-04-30 18:10:00天秤座
日期:2014-04-25 12:12:00申猴
日期:2014-04-22 11:30:15午馬
日期:2014-03-07 16:06:40辰龍
日期:2013-12-25 18:36:00摩羯座
日期:2014-09-02 17:00:55
3 [報(bào)告]
發(fā)表于 2013-11-14 16:48 |只看該作者
時(shí)期不同,標(biāo)準(zhǔn)不同 -> 編譯器版本不同所依據(jù)的標(biāo)準(zhǔn)不同

論壇徽章:
7
天蝎座
日期:2013-09-28 10:45:42雙子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32處女座
日期:2014-09-17 16:44:332015年亞洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16賽季CBA聯(lián)賽之山東
日期:2018-03-02 23:59:31
4 [報(bào)告]
發(fā)表于 2013-11-14 19:45 |只看該作者
main 中的return值,最終會(huì)被傳遞給exit函數(shù),然后在傳遞給_exit函數(shù),這個(gè)return值會(huì)作為系統(tǒng)取得進(jìn)程退出的返回碼。 $> echo $?  --憑印象說(shuō)的。但是返回void肯定不對(duì)(切確的說(shuō)是不合標(biāo)準(zhǔn))。

論壇徽章:
17
處女座
日期:2013-08-27 09:59:352015亞冠之柏太陽(yáng)神
日期:2015-07-30 10:16:402015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-07-29 18:58:182015年亞洲杯之巴勒斯坦
日期:2015-03-06 17:38:17摩羯座
日期:2014-12-11 21:31:34戌狗
日期:2014-07-20 20:57:32子鼠
日期:2014-05-15 16:25:21亥豬
日期:2014-02-11 17:32:05丑牛
日期:2014-01-20 15:45:51丑牛
日期:2013-10-22 11:12:56雙子座
日期:2013-10-18 16:28:17白羊座
日期:2013-10-18 10:50:45
5 [報(bào)告]
發(fā)表于 2013-11-14 19:50 |只看該作者
回復(fù) 1# sampher


    main函數(shù)的返回值就是運(yùn)行其程序的這個(gè)進(jìn)程的狀態(tài)碼,命令行程序常常通過(guò)判斷相應(yīng)命令(進(jìn)程)的狀態(tài)碼來(lái)判斷相應(yīng)命令是結(jié)果是否正常,VC++是允許void main這種形式的程序入口原型的,之所以允許這么做是有歷史原因的,在最初的K&R C中main函數(shù)的原型為:main(),沒(méi)有對(duì)返回值和參數(shù)做出明確規(guī)定,為此存在不同main函數(shù)原型擴(kuò)展。K&R C第二版開始對(duì)此做出了更細(xì)致的規(guī)定,除了main()這樣的原型以外又加入了帶參數(shù)的原型:main(int argc, char *argv[]),又由于K&R C中允許Implicit declarations(未經(jīng)聲明而直接使用的將視為int類型,函數(shù)返回值也視為int)。main函數(shù)原型真正的定型是從C89(第一版ANSI C標(biāo)準(zhǔn))開始的,此標(biāo)準(zhǔn)明確了int main(void)和int main(int argc, char *argv[])這兩個(gè)原型,其它的原型是不允許的,考慮到對(duì)舊代碼的兼容問(wèn)題,許多編譯器也允許K&R C中的原型,不帶返回值類型的main視為void或int處理(由編譯器決定)。從此以后main逐漸的定型下來(lái),但部分編譯器依然存在不同的擴(kuò)展,比如說(shuō)帶有環(huán)境變量參數(shù)envp的擴(kuò)展。總而言之,使用main最好嚴(yán)格按照標(biāo)準(zhǔn)來(lái),否則代碼不能保證可移植性。


 總之:標(biāo)準(zhǔn)C/C++都對(duì)返回值有要求,沒(méi)標(biāo)準(zhǔn)化之前的沒(méi)要求,很多編譯器為了兼容老代碼才允許了返回值原型為void的形式。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2013-11-15 16:09 |只看該作者
應(yīng)該是和編譯器有關(guān)系

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2013-11-16 12:30 |只看該作者
上學(xué)時(shí):
void main() {
   
}

現(xiàn)在:
int main(int argc, char*argv[]) {
    return 0;
}
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP