我最近就要考試了,我的DEC-C++要編譯的時候跑不出執行結果視窗!!跑出來一下就不見了!!根本看不到我的執行結果..以前好像都不會這樣~~~救命
C++書上光碟片附的程式~
/***************************
檔名:ch4_09.c
功能:跳脫字元
***************************/
#include
#include
void main(void)
{
printf(\"12345678901234567890\\n\");
printf(\"Hello\\n\");
printf(\"\\tHello\\n\");
printf(\"\\t\\tHello\\n\");
printf(\"\\t\\rHello\\n\");
/* system(\"pause\"); */
}
出現的錯誤訊息:
C:\\Documents and Settings\\SAXON~\\桌面\\ch04\\ch4_09.c In function `main\':
10 C:\\Documents and Settings\\SAXON~\\桌面\\ch04\\ch4_09.c [Warning] return type of `main\' is not `int\'
誰告訴我怎麼辦~~
2006-07-27 17:01:08 · 6 個解答 · 發問者 Saxon~ 2 in 電腦與網際網路 ➔ 程式設計
早期C是應用在Unix系統,C++是在C之後發展出來的,因此也承襲C的風格。
在Unix系統,通常會要求一個程式回報他的執行狀況,因此在main需要宣告成
int main(void) /*如果沒有命令列參數要傳入的話*/
{
if(something worng) return 1;
return 0; /* 正常結束*/
}
Dev C++本身只是一個開發介面,可與它搭配的compiler有很多,只要你會設定。所以你若從網站download,他會問你要使用何種compiler。
Unix 移植到 Microsoft系統的compiler有MinGW,及其他。這些compiler就會要求如上的main的撰寫方式,否則會出現錯誤或警告。
你的程式是依照 DOS 模式撰寫,所以你必須使用 DOS視窗執行該程式。
你到附屬應用程式,點選命令提示字元會跳出DOS視窗,然後 CD 到你程式的所在位置執行該程式,DOS視窗就不會被關掉,除非你在命令列下達exit指令。
另一個變通的方式就是在 return 0; 之前加上 system("PAUSE");,也就是你必須將你程式內,在system("pause");處的註解符號(/* */)移除。 PAUSE 是 DOS 的指令,意思是當程式執行到該處時要暫停,因此,當你在 DEV C++執行該程式時,會開啟一個 DOS 視窗,當程式執行到 PAUSE時,就會暫停,然後視窗仍然保留在畫面上。
2006-07-28 19:17:45 · answer #1 · answered by Etc.Smith 2 · 0⤊ 0⤋
我不認為用int main() 開頭是拘泥的行為,main函式所回傳的值是錯誤代碼,0習慣上代表程式正常結束的意思,而不是單純為了回傳而回傳
剛開始寫的程式大部分是解一些題目,不會需要用到這樣的機制,但如果就這樣把它直接忽略(尤其是這樣教別人)會讓觀念變成的很奇怪:程式有錯是我自己的事不需要告訴使用者、寫程式都只是這短短幾行不會出什麼錯不需要回報等等
學寫程式主要是練習自我的邏輯思考和解題能力?那不需要大費周章寫程式啊,買些解謎書就好了,寫程式是為了要寫出人用的東西,讓電腦能幫人們做人們指定的工作,不然電腦一直要他快幹什麼,反正人們解題的速度再快也快不到赫茲啊
2006-07-28 10:17:30 · answer #2 · answered by YuFan 2 · 0⤊ 0⤋
因為課本的程式並不是用 Dev-C 編譯的...
我猜應該是用 Visual C++ 編譯的 ^_^
其實不應該拘泥於那些 int main() 開頭或是 void main() 開頭,
這樣就失去寫程式的真正的意義了,
學寫程式主要是練習自我的邏輯思考和解題能力.
我們參考別人的程式範例也是看他怎解題的,
或是他的寫法有多漂亮之類的 ^^
2006-07-28 05:36:05 · answer #3 · answered by 榮章 4 · 0⤊ 0⤋
執行一下就消失, 那是因為你執行結束前沒有暫停畫面, 如果你的程式用命令列模式底下執行, 就不會有這個問題; 此外, 你的程式看起來本來是會暫停的, 但暫停的命令被你 mark 掉, 所以才不會暫停, 因此將你的程式修改成以下這樣, 問題就會解決:#include
2006-07-28 11:11:22 補充:
如同Danny所說,如果就VC++的編譯器而言,這程式本身沒什麼問題,在視窗開發介面下編譯也會在顯示完畫面之後暫停,而不會立刻消失,你的程式因為是用Dev C++編譯,他就是要求 main 一定要宣告有傳回值的型態,而且執行就是預設你會在命令列下執行,也不會進行特別處理,因此你在執行才會閃一下就不見;但其實即使是VC++編出來的可執行檔,如果你在檔案總管點兩下那個執行檔,視窗也是會閃一下就消失的。
2006-07-28 11:18:07 補充:
所謂命令列模式,並不是什麼設定的問題,而是你可以開命令列的視窗﹙像以前Dos的那種文字視窗﹚然後到你執行檔存在的目錄,直接輸入執行檔名稱來執行程式,執行完你就一定會看到執行結果,因為畫面不會消失,是這個意思。但比較簡單的方法,其實就是你直接把程式碼改成我寫的那樣就可以了。
2006-07-27 17:51:08 · answer #4 · answered by Rody 5 · 0⤊ 0⤋
蝦米--我用你ㄉ方法int main(void)還是沒用ㄝ..結果視窗閃一下就消失ㄌ~~
2006-07-27 21:32:48 補充:
我照你說ㄉ方法改了int main(void)和結尾的return 0;結果沒錯誤訊息~~但是結果視窗還是閃一下就不見了~~一樣呀..氣死ㄌ
2006-07-27 21:38:58 補充:
我也重新灌了好幾次...結果怪怪的--每次按下編譯及執行就看不到結果視窗~~我好急唷..最近要考試..拜託你ㄌ
2006-07-27 22:06:28 補充:
你說~~執行一下就消失, 那是因為你執行結束前沒有暫停畫面, 如果你的程式用命令列模式底下執行, 就不會有這個問題
那我要去哪裡修改~~要去哪裡修改設定蔫??
2006-07-27 22:19:09 補充:
而且那個範例是課本光碟附的例題..怎麼會不能執行??光碟的檔案都寫錯了麻??
2006-07-27 17:26:44 · answer #5 · answered by Saxon~ 2 · 0⤊ 0⤋
Dev-C++ 不允許 void main,它要 int main 和傳回值
int main(void){
//…敘述式…
return 0;
}
2006-07-28 10:48:21 補充:
你不一定要用 Dev-C++ 編譯器,現在微軟的官方網站有提供免費的 Visual Studio 編譯軟體,版本是 Express 版的。
Visual Studio Express 網址:http://www.microsoft.com/taiwan/vstudio/express/default.aspx
2006-07-28 11:03:00 補充:
如果你沒有執行「單步除錯」、或是沒有在程式碼加入「中斷點」、或是沒有在 Start Without Debugging 環境下執行,程式就會很快地從開始執行到結束,你當然無法看到執行的過程。你的程式碼裡有 system("PAUSE") 暫停 被當成註解。以目前的 Dev-C++ 的 Beta 版本,它的除錯器是目前是無法使用的。而微軟的官方網站有提供「免費的」Visual Studio 編譯軟體可以下載。微軟只提供 Express 版本,網址:http://www.microsoft.com/taiwan/vstudio/express/default.aspx
2006-07-27 17:09:16 · answer #6 · answered by Big_John-tw 7 · 0⤊ 0⤋