推 chuegou: 完全不能經過A嗎 那只能去stack裡面找返回位址 06/28 22:00
→ w0005151: 同樣原因的錯誤建議集中處理, 你應該重新思考函數怎麼切 06/28 22:15
→ Lipraxde: 直接 exit 不好嗎? 06/28 22:17
推 LPH66: 同意二樓, 你應該思考函數的功能分類法 06/28 22:57
→ LPH66: 什麼函數負責什麼功能該回報什麼 06/28 22:58
→ LPH66: 由於你提到了「使用者的 input 有可能會有錯誤」 06/28 22:59
→ LPH66: 你應該思考這個「檢查錯誤」的功能該由誰負責由誰叫起 06/28 22:59
推 Dracarys: longjmp? 06/28 23:08
→ hsnuyi: 丟exception 06/28 23:15
→ james732: setjump與longjump應該可以做到,但可能不是好的做法 06/29 00:15
推 firejox: 雖然setjump longjump 是允許你這樣做,實務上不建議你 06/29 03:51
→ firejox: 用它們 06/29 03:51
推 CoNsTaR: option, result 06/29 04:37
推 Gway: 用global function pointer把main address儲存起來 然後在su 06/29 04:50
→ Gway: b-fun執行error check時 若有需要跳回main 則直接調用此funt 06/29 04:50
→ Gway: ion pointer? 06/29 04:50
→ petercoin: B() return error code回A A再判斷error code也是一種 06/29 09:13
→ petercoin: 作法吧 06/29 09:14
→ Killercat: 你是想問 如何在C底下達成類似exception的效果嗎? 06/29 13:09
→ Killercat: 如果是的話 標準做法就是setjmp跟longjmp 06/29 13:09
→ Killercat: C天生就沒辦法像go傳回err 不是所有func都有空間給你塞 06/29 13:10
→ Killercat: err code,硬要寫成這樣(如一堆HRESULT開頭的W32API)其 06/29 13:11
→ Killercat: 實也滿痛苦的,生活沒必要這樣悲慘的過(誒) 06/29 13:11
→ Killercat: 另用Gway你提到的作法基本上跟setjmp/longjmp沒兩樣啊 06/29 13:12
→ Killercat: 而且你這樣還會有堆疊的問題 XD 06/29 13:12
→ petercoin: 其實他如果是只跑在Windows系統上,SetLastError跟 06/29 19:42
→ petercoin: GetLastError也可以用啊 06/29 19:42
→ petercoin: function回傳bool判斷有沒有成功,失敗就撈last error 06/29 19:42
→ petercoin: code就好 06/29 19:42
推 kingofsdtw: 全域變數,sleep ,and kill 06/29 20:01
→ kingofsdtw: 不過是同一隻程式嗎? 06/29 20:02
→ loveme00835: 先釐清你的責任吧 06/30 00:27
→ Golven: 用goto? (誤) 06/30 18:54
推 hongsiangfu: reset? 07/01 00:00
→ sunneo: 做一隻interpreter 把全部function存到function pointer 07/01 01:10
→ sunneo: 這樣就可以用間接的方式setjmp/longjmp (誤 07/01 01:10
→ Killercat: setjmp/longjmp應該有靠AR處理stack問題 會放掉stack 07/01 20:31
→ Killercat: 其他所有的辦法應該都會碰到堆疊殘留的問題... 07/01 20:31
→ Killercat: 這個我沒有非常確定 有高手的話請指正一下.. orz 07/01 20:32
推 stupid0319: call A()之前呼叫 pushad ,回到 main 呼叫 popad 07/04 21:40