[問題] 一程式問題 和一個小問題

看板C_and_CPP作者 (風要飛翔)時間10年前 (2014/05/13 08:06), 10年前編輯推噓4(5111)
留言17則, 11人參與, 最新討論串1/1
#include <stdio.h> int sum_of_square(int a, int b) { int square(int v) {return v*v; } return square(a) + square(b); } int main() {printf("%d", sum_of_square(3, 4)); return 0; } 請問為何無法通過編譯呢 在其他版發問 一位說 因為函式內沒用到 a b 一位說不可擁巢狀函式 不知道哪個才是對的 還有一個小問題是 void 函式 這樣是這個函式不會回傳任何值 即使是函式內有return也是嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.22.194 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1399939616.A.41F.html

05/13 08:47, , 1F
compiler告訴我int square()是違反規則的 把他拉出去
05/13 08:47, 1F

05/13 08:49, , 2F
拉到sum_of_square上面再編譯就可以了
05/13 08:49, 2F

05/13 08:49, , 3F
a跟b沒用到在VS上頂多是給一個warning 不會編譯不過
05/13 08:49, 3F

05/13 09:17, , 4F
http://codepad.org/vlM1ABpu 把square拉出來可以過
05/13 09:17, 4F

05/13 09:20, , 5F
都定義void了,如果還return,會錯誤吧
05/13 09:20, 5F

05/13 09:21, , 6F
前面是因為巢狀函式,在函式內又定義函式造成錯誤
05/13 09:21, 6F

05/13 09:31, , 7F
void 函式也是能半途 return 出來的, 只是不能帶值而已
05/13 09:31, 7F

05/13 09:33, , 8F
原 PO 的問題簡答是不允許巢狀函式, 但這句話在現在的 C++
05/13 09:33, 8F

05/13 09:35, , 9F
卻不完全正確 -- 不過對新手來說就先這樣記吧
05/13 09:35, 9F

05/13 10:13, , 10F
本來想回2 但又覺得怪怪的XD
05/13 10:13, 10F

05/13 14:47, , 11F
這問題超大的
05/13 14:47, 11F

05/13 15:02, , 12F
這排版......
05/13 15:02, 12F

05/13 21:42, , 13F
請不要用 Pascal 的風格寫 C 語言程式 :)
05/13 21:42, 13F
排版問題抱歉啦 程式碼用置底轉完,直接複製,發完忘了檢查 學這個為了是為了考科有一小部分是這個 學的不扎實,有蠢問題只能說請多多包涵了 感謝大大們解答了 ※ 編輯: horse2819 (36.233.22.194), 05/13/2014 21:48:10 ※ 編輯: horse2819 (36.233.22.194), 05/13/2014 21:48:32 ※ 編輯: horse2819 (36.233.22.194), 05/13/2014 21:55:05

05/13 22:25, , 14F
指向function的指標,就是個int function指標吧@@?
05/13 22:25, 14F

05/13 23:01, , 15F
LPH66,為什麼不能用 C++不允許巢狀函式 解釋呢?
05/13 23:01, 15F

05/13 23:10, , 16F
大概認為lambda function算是巢狀函式?
05/13 23:10, 16F

05/14 16:55, , 17F
GNU C extension 接受巢狀函式, 故原PO程式用gcc可編譯並執行.
05/14 16:55, 17F
文章代碼(AID): #1JSM8WGV (C_and_CPP)