Re: [問卦] 學會c語言就翻身的八卦消失

看板Gossiping作者時間8年前 (2015/12/20 22:01), 編輯推噓6(717)
留言15則, 12人參與, 最新討論串6/6 (看更多)
※ 引述《freeunixer (離自相空她相)》之銘言: : ※ 引述《Hatred (●)》之銘言: : : 本魯的朋友其實幾乎不會寫程式,但他說void main(void)並非main函數的 : : 正確signature,標準從來都不允許這樣寫,因此如果某些compiler給過, : : 只能視為幸運。 : 剛閉關深造去一個月回來... : 很晚了,現在回應該沒太多人看到,隨便吧. : 其實就算你只用 main() 還是會過... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^這要看我們用哪個compiler~ 印象中以前聽人說過... C的標準只說了int main(void)和int main(int argc, char *argv[])或其等價 寫法是OK的,但是沒說void main(void)也要給過,所以雖然許多compilers會給 過,但是一般來說,我們不應該是依賴這些compilers額外給予的方便,來讓程式 編譯成功,本魯以前有用gcc編譯過宣告成void main()的程式,就GG了(或許也 跟gcc的版本有關,我不確定)。 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf 節錄一段可能有點老的standard: The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters: int main(void) { /* ... */ } or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared): int main(int argc, char *argv[]) { /* ... */ } or equivalent; or in some other implementation-defined manner. 由上可知,標準沒有說void main(void)是被允許的寫法,因此給予這種寫法方 便,只能視為某些compilers額外給予的方便。 不過,會不會後續C或C++的標準就正式把void main(void)納進來了呢?這本魯 的朋友還沒告訴本魯,所以本魯不知道... : LLVM Clang : http://postimg.org/image/j02qmoojf/ : main 前面要 int 是因為如果你在函式裡下了 return, : 那會傳回 0 or 1,正常情況下要宣告傳回值是 int 型別. : 你不加, compiler 可能還是會多事替你直接宣告成 int : main() 裡加 void 只是表示不需要從外部丟參數進去. : 很多人搞不清楚到底 main 前面要用 int 還是 void, () 裡面要不要 void,是因為 : 1.老師差 : 2.用的書差 : 3.寫書的人差 : 4.上課都沒在聽 : : 本魯的朋友一直好奇一件事,寫system("pause"),放到別的環境裡面不就 : : 可能沒辦法執行pause指令了嗎?那,為什麼大家不寫getchar()之類的啊? : 其實只要不在 win 桌面點 exe 就沒問題, : 在 WIN GUI 要加 pause 是因為不讓它停在那,它會一閃即逝. : 如果你在執行列裡直接打 exe,還是 ok 的. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.49 ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1450620071.A.22E.html

12/20 22:02, , 1F
說的還不錯 我也這樣覺得
12/20 22:02, 1F

12/20 22:02, , 2F
幹還以為走錯板
12/20 22:02, 2F

12/20 22:03, , 3F
這種資訊常識類的東西到底要討論到何時
12/20 22:03, 3F

12/20 22:03, , 4F
原來是這樣
12/20 22:03, 4F

12/20 22:03, , 5F
還不是摸不到C罩杯
12/20 22:03, 5F

12/20 22:04, , 6F
宅氣沖天!!
12/20 22:04, 6F

12/20 22:06, , 7F
函數帶不帶參數build會不會過跟gcc的flag比較有關
12/20 22:06, 7F

12/20 22:06, , 8F
要不你就多下一個 -Werror 檢查看看惹
12/20 22:06, 8F

12/20 22:09, , 9F
會這些有很力害嗎
12/20 22:09, 9F

12/20 22:10, , 10F
不厲害啊,就跟五樓講der一樣
12/20 22:10, 10F

12/20 22:10, , 11F
embeded system的main跳不出去 是要return啥
12/20 22:10, 11F

12/20 22:55, , 12F
寫void main(void)的 會摸不到C罩杯 慎之!
12/20 22:55, 12F

12/21 00:40, , 13F
本來標準就沒有void main
12/21 00:40, 13F

12/21 00:43, , 14F
嵌入式雖然都卡在while(1) 但是標準沒有void main還是i
12/21 00:43, 14F

12/21 00:43, , 15F
nt main較好
12/21 00:43, 15F
文章代碼(AID): #1MThId8k (Gossiping)
討論串 (同標題文章)
文章代碼(AID): #1MThId8k (Gossiping)