[問題] function中為什麼不能再宣告function

看板C_and_CPP (C/C++)作者 (oops)時間16年前 (2009/12/25 14:28), 編輯推噓5(5014)
留言19則, 12人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 有人問到,為什麼不能把function宣告在main中,是不是法則上本身就不行 比如說variable的scope都是有規定他的性質。 因為有人問了突然不知該怎麼解釋,我從沒想過這種問題 XD 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.69.118

12/25 14:29, , 1F
因為這是規定的。
12/25 14:29, 1F

12/25 14:29, , 2F
語言的規格,沒什麼好解釋。
12/25 14:29, 2F

12/25 14:33, , 3F
純粹是語言制定者愛好的問題, 在Pascal中就可以在函式中再
12/25 14:33, 3F

12/25 14:33, , 4F
定義函式.
12/25 14:33, 4F
那有沒有可以唬爛的解釋,比如每個function就像個thread,若要在其中什麼什麼 C++在系統架構上無法做到之類的可以劃吼覽 ※ 編輯: WhisperGhost 來自: 59.124.69.118 (12/25 14:47)

12/25 14:56, , 5F
因為這樣做沒有意義,找不到實際用途
12/25 14:56, 5F

12/25 14:56, , 6F
不過你可以在function裡加一大堆{}...
12/25 14:56, 6F
int main() { struct A{ void func() { cout << "test" << endl; } } tmp; tmp.func(); } 別人試這樣 ok... ※ 編輯: WhisperGhost 來自: 59.124.69.118 (12/25 15:02)

12/25 15:13, , 7F
你上面的例子, func相當於是struct A的member function
12/25 15:13, 7F

12/25 15:13, , 8F
所以這個例子你是可以在main裡define struct....:)
12/25 15:13, 8F

12/25 15:16, , 9F
用functor來假裝一下好了
12/25 15:16, 9F

12/25 15:16, , 10F
nested function 怎麼會沒用,尤其是配合 closure
12/25 15:16, 10F

12/25 15:16, , 11F
可惜標準規格一直沒把它加進去
12/25 15:16, 11F

12/25 15:25, , 12F
你要畫虎爛,就說C誕生的時候認為這樣沒啥用,就好了
12/25 15:25, 12F

12/25 15:28, , 13F
不過gcc的extension支援這個特性...XD
12/25 15:28, 13F

12/25 15:29, , 14F
12/25 15:29, 14F

12/25 15:29, , 15F
沒 closure 真的很可惜 /_\
12/25 15:29, 15F

12/25 15:55, , 16F
老實說...這篇真的有點莫名奇妙= ="
12/25 15:55, 16F

12/25 18:47, , 17F
別人這樣試當然ok...
12/25 18:47, 17F

12/26 16:48, , 18F
這哪會莫名其妙?沒其他語言經驗的人才覺得莫名其妙吧!
12/26 16:48, 18F

12/26 23:10, , 19F
推樓上 XD
12/26 23:10, 19F
文章代碼(AID): #1BD5jre3 (C_and_CPP)
文章代碼(AID): #1BD5jre3 (C_and_CPP)