2010年5月7日 星期五

[C/C++] Linux using system("PAUSE")

目前我在 linux 的環境中編譯 C/C++ 都沒有發生什麼大問題
只是在 system("PAUSE"); 這一段會過不去
如下圖所示

在上網搜尋之前先自行測試的結果
如果是 // system("PAUSE"); 的話就不會有編譯錯誤的情形

上網搜尋的結果是
system("PAUSE"); 是 MS 環境底下才能用的指令
也就是說 system("PAUSE"); 的意思是呼叫 DOS 指令來暫停程式
而 Linux 環境中並沒有這個指令能被呼叫所以編譯才會錯誤


目前就算有這行程式碼我也沒有什麼關係
只是以後程式寫大了要用暫停程式這招來檢查程式是否有錯誤就不能用了
(這可是絕招耶!)
所以找到了一位神手寫的替代方案
參考網頁︰[C/C++] system("pause") for linux

大意如下︰
自行定義 PAUSE 這個指令,要用的時候在呼叫即可

程式︰
#define PAUSE cout << "Press any key to continue..." << endl; fgetc(stdin);


原作者使用的是 C語言 的環境
所以用的是 printf();
而我用的是 C++ 的環境所以用 cout
若要用 C++ 來執行則需要再增加引頭檔 stdio.h

執行結果如下

按下任意鍵之後下圖所示

2 則留言:

  1. 除了使用Macro Definitions之外,你還可以自行建立pause這個程式,然後就如同在windows底下直接呼叫system("pause")這行程式碼來使用,詳細的作法可以參考你所連結的網頁。

    回覆刪除
  2. 我也很想這麼做耶...
    不過還是寫出來就是了...

    回覆刪除