Re: [問卦] 學會c語言就翻身的八卦消失
※ 引述《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
12/20 22:03, 5F
→
12/20 22:04, , 6F
12/20 22:04, 6F
推
12/20 22:06, , 7F
12/20 22:06, 7F
→
12/20 22:06, , 8F
12/20 22:06, 8F
噓
12/20 22:09, , 9F
12/20 22:09, 9F
→
12/20 22:10, , 10F
12/20 22:10, 10F
推
12/20 22:10, , 11F
12/20 22:10, 11F
推
12/20 22:55, , 12F
12/20 22:55, 12F
推
12/21 00:40, , 13F
12/21 00:40, 13F
推
12/21 00:43, , 14F
12/21 00:43, 14F
→
12/21 00:43, , 15F
12/21 00:43, 15F
討論串 (同標題文章)
完整討論串 (本文為第 6 之 6 篇):
問卦
28
52