看板 C_and_CPP 關於我們 聯絡資訊
真的不要用system("PAUSE"); ? http://www.gidnetwork.com/b-61.html 剛剛無聊GOOGLE c++ SYSTEM PAUSE 跑出的第一個 他有幾個理由 ●Only in DOS & Win : not portable ●It's a very expensive and resource heavy function call : 用推土機開門(殺雞用牛刀) 系統步驟: 1.suspend your program 2.call the operating system 3.open an operating system shell (relaunches the O/S in a sub-process) 4.the O/S must now find the PAUSE command 5.allocate the memory to execute the command 6.execute the command and wait for a keystroke 7.deallocate the memory 8.exit the OS 9.resume your program ●You must include a header you probably don't need: stdlib.h or cstdlib Advice: in C :getchatr() C++:cin.get() 不知道各位高手覺得如何? 我是新手 無法提供意見 囧rz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.44.2
flamo:如果你在Command Line模式, 需要system("pause")嗎? 05/16 00:44
zerodevil:主要問題是not portable 05/16 00:51
clanguage:有差嗎..你都只要pause了..還在意浪費的資源嗎 @@" 05/16 00:53
zerodevil:浪費資源那點根本沒差 05/16 00:53
sunneo:不過那速度真的挺慢的 05/16 01:16
sunneo:就像將一個shell parse後把執行程式的部份用system 05/16 01:17
sunneo:遠比執行執行shell還慢 05/16 01:17
VictorTom:說真的, 乖乖開console去跑自己自己寫的console程式, 不 05/16 01:24
VictorTom:過這常用在程式最後暫留視窗, 不過是在window的IDE下途 05/16 01:25
VictorTom:個方便; 如果是程式中有其他地方要用press any key to 05/16 01:26
VictorTom:continue的功能, 或許就用一般IO函數即可也是沒錯:) 05/16 01:27
VictorTom:用system("PAUSE");每次都被小弟防火牆攔著問放不放行XD 05/16 01:27
Blueshine:我當助教時就直接跟學生講…我不在windows測 05/16 07:52
Blueshine:用了會有error…先扣分再說 05/16 07:52
MOONRAKER:爛理由咧 如果你不能提供更好的它就不是爛理由 05/16 09:57
MOONRAKER:本來就一點意義都沒有…去command-line下執行不就結了 05/16 09:57
MOONRAKER:這就像要停車時每次都拉手煞車 弄得整車人東倒西歪一樣 05/16 10:01
yauhh:這是常識.真要程式中有若干步驟式暫停,一般要用等待按鍵函式 05/16 10:45
final01:當助教一下要那麼囂張嗎?? 05/16 14:16
Blueshine:ACM的規定本來就是這樣... 05/16 16:32
loveflames:ACM的規定跟學生有什麼關係..... 05/16 17:20
loveme00835:寫程式多為使用者思考, 為了跑你的程式還要到console 05/16 17:45
loveme00835:去看結果, 會不會太自私了點... 05/16 17:45
uranusjr:最好是不用 system("PAUSE") 就要去 console 看 = = 05/16 17:48
uranusjr:而且也沒人規定你寫的時候要怎樣啊, 大不了你寫完作業再 05/16 17:49
uranusjr:把最後一行拿掉不行嗎? 05/16 17:49
james732:大家的火氣別這麼大 覺得用不用沒那麼嚴重啊.... 05/16 17:52
VictorTom:l大您似乎搞錯了一件事, 寫一個普通的console AP, 讓使 05/16 17:56
VictorTom:用者先開console再執行本來就是自然而然的事, 一般練習 05/16 17:57
VictorTom:寫入門程式加PAUSE, 不過是因為window環境下, 由IDE 05/16 17:57
VictorTom:launch起來的console程式在執行結束後會自動close該 05/16 17:58
VictorTom:console window, 所以我們用PAUSE或IO方式暫時停住那個 05/16 17:58
VictorTom:視窗以便user/PG來看到執行結果, 扯到自私是完全搞錯方 05/16 17:59
VictorTom:向了吧@_@" 05/16 17:59
VictorTom:以現在的程式來說, 真正與user溝通的UI也多半window化了 05/16 18:01
loveme00835:> <真是抱歉 05/16 18:03
VictorTom:XD 大家討論交換意見而已啦 XD 05/16 18:07
VictorTom:其實這些理由不無道理, 有些背後相關的牽連都是可以研究 05/16 18:07
VictorTom:的. 不過寫程式總是有目的有結果, 在什麼環境有什麼可用 05/16 18:09
VictorTom:的資源就做什麼事. 說到底IDE聰明一點在run launch AP時 05/16 18:10
VictorTom:最後像bat一樣自動掛個類似PAUSE的功能就沒事啦XD 05/16 18:12
loveme00835:嗯嗯 05/16 18:14
hilorrk:code::blocks就會停 而且還附上執行時間哦>.^ 05/16 18:55
VictorTom:糟~`這樣小弟我也想把臨時測程式的工具從Dev換C::b了XD 05/16 19:05
yauhh:那位當助教的,我覺得如果你要做教育就要有明確的教育目標. 05/16 19:13
yauhh:而教育目標就是有所謂的重點,是老師跟學生提點過的. 至於, 05/16 19:13
yauhh:system()叫了哪個指令,那只是平台的知識而已,實在不必要私自 05/16 19:14
yauhh:加入到你的助教行程中要求學生. 05/16 19:15
yauhh:你有權力可以逼學生接受某規矩,不見得表示規矩符合教育意義. 05/16 19:16
AntaresStar:system("pause")在Linux下跑也不過就是一行sh錯誤 05/16 19:22
AntaresStar:又不會導致當掉 何必怕它... 05/16 19:22
herman602:→ hilorrk:code::blocks就會停 而且還附上執行時間哦>. 05/16 21:41
VictorTom:不知道C::B能不能直接對單一.c/cpp compile, 有時候簡單 05/16 22:31
VictorTom:測東西或掛Debug看過程memory, 都要弄project就有點煩:( 05/16 22:32
VictorTom:有空裝起來玩玩看好了:) 05/16 22:32
james732:可以的,請見VCR:http://ppt.cc/cxvo 05/16 23:40
loveme00835:可以的, 只是不知道為什麼.c 還可以寫C++,設定有錯嗎? 05/16 23:53
VictorTom:感謝j大, 您也太有心了, 老是麻煩您抓圖....^^|| 05/17 00:23
VictorTom:通常IDE會依.c或.cpp來找使用的compiler, 不過l大提到的 05/17 00:24
VictorTom:狀況就挺有意思的了, 等有使用的強者回應吧XD 05/17 00:24
james732:其實這個圖老早就抓了 只是V大提了就擺上來 XDDD 05/17 00:46
kikiqqp:抱歉 Blueshine兄 你應該是位失格的助教吧 05/17 00:58
hilorrk:l大提到的那個問題 我想不是IDE的問題...應該是compiler 05/17 01:20
hilorrk:很神奇的是 g++允許下面這種程式碼: 05/17 01:21
hilorrk:int n; 05/17 01:21
hilorrk:cin >> n; // C++ style 05/17 01:21
hilorrk:int a[n]; // C99 style 05/17 01:21
hilorrk:至於詳細為何...我也不知道XD 有請高手解答 05/17 01:23
VictorTom:印象中是編譯時有參數可以開關吧?? 板上好像討論過:) 05/17 01:27
hilorrk:我只知道可以用-std開關C99和C++0x的東西...但是預設的 05/17 01:38
hilorrk:C++98居然支持C99(我印象中兩者不相容?) 讓我頗疑惑XD 05/17 01:38
wudidog:印象中C++本身就支援這種宣告方式吧!?是C99向C++學的 05/17 10:37
VictorTom:印象中之前的討論是, VLA是C標準後來才有的, C++沒有人 05/17 11:07
VictorTom:提需要, 所以C++標準應該是沒有, compiler可能有extend 05/17 11:08
VictorTom:這個feature就是了@_@" 05/17 11:08
hilorrk:C++有vector和valarray這些東西 沒必要有VLA吧...XD 05/17 12:16
VictorTom:方便啊, 對array初學者很friendly XD 05/17 12:19
hilorrk:所以說C/C++的標準compiler很難遵守 除了C++本身語法太複 05/17 12:19
VictorTom:不過說真的不曉得它怎麼實作的, 是不是仍使用stack, 05/17 12:20
hilorrk:雜外 兩者的歧異也是原因之一嗎-____-|| 05/17 12:20
VictorTom:小弟這個原始人還是習慣需要自己malloc/new/vector, 05/17 12:20
VictorTom:VLA就有點不敢用Orz 05/17 12:20
VictorTom:啊, h大不好意思不小心斷到....XD 05/17 12:21
hilorrk:習慣+1 此外很多compiler都不支援C99也是個原因 05/17 12:22
hilorrk:尤其是在某些特定的環境(embedded system)~ 05/17 12:22
lausai:C++不支援VLA 樓上hi大那段code編得過 是因為編譯時沒加上 05/17 14:05
lausai:-pedantic參數 建議man一下gcc查看pedantic的描述 05/17 14:07