2016-09-05 35 views
-3

我有一個簡單的問題。我怎樣才能做到這一點 打印Hello world,然後轉到'anotherMessage',然後打印該函數中的消息,然後跳過下一個cout「Dont print this」並退出,跳過一些代碼並退出程序

另外,如何退出programm,if我交換的功能,但保持相同的語句

void main() 
{ 
    cout << "Hello World"; 
    anotherMessage(); 
    cout << "Dont print this"; 
} 

void anotherMessage() 
{ 
    cout << "Print this"; 
} 
+5

您可以在'anotherMessage()'定義的末尾放置'exit(0)'。 –

+0

如果我想繼續打印hello world並打印此內容並跳過不打印此行? – Aryan

+1

你知道if語句嗎? – rustyx

回答

1

您可以將anotherMessage()函數的類型定義爲int,返回一個整數值(在下面的代碼中爲1)。檢查返回值是否爲1,如果是,則通過調用exit(0)退出程序。

void main() 
{ 
cout << "Hello World"; 
int val = anotherMessage(); 
if(val) exit(0); 
cout << "Dont print this"; 
} 
int anotherMessage() 
{ 
cout << "Print this"; 
return 1; 
} 
0

一個退出()語句立即關閉您的代碼,但不是一個所需的語句。

當你的函數像這樣返回一個bool時,你可以使用if語句。

bool func(); 

func(){ 
// Do Stuff 
return // true or false 
} 

void main(){ 
    if(func()){ 
     // Do Stuff 
    }else{ 
     //Do other Stuff 
} 
} 
2

正如指出的πάνταῥεῖ你可以在anotherMessage()定義的末尾使用exit(0)

exit(0)表示成功程序終止&它是完全可移植的,雖然

exit(1)(一般)表示不成功的終止。但是,它的使用是不可移植的。

如果你正在編寫一個函數,最終可能會出現在一個庫中,那麼從這裏調用exit是很糟糕的做法:將錯誤信號發送給調用代碼要好得多(通過特定的返回值或例外),並讓調用代碼決定要做什麼。 (有些情況下它是完全有效的,例如,如果你正在編寫一個名爲quit_if_file_not_found的函數,那麼你的用戶期望終止。)

在你的情況下,你的解析函數可能不應該調用exit:你例如,在將來的某個時間點,可能需要您的主代碼在解析第一個失敗的代碼時要求用戶輸入不同的文件名。如果你的解析程序終止程序,你必須修改你的主代碼和那個函數。如果它發出了錯誤信號,那麼你只需要修改main中的邏輯。

(並且不要在沒有打印錯誤消息或記錄類似於上述操作的情況下退出,這會讓失落的用戶無法知道如何解決代碼遇到的問題。)

+0

你是如何從這個模糊的問題中推斷出OP正在編寫一個解析器並詢問文件名?你是福爾摩斯嗎? – molbdnilo

+0

@molbdnilo:不,我只是想給'exit()'的用戶好或壞。 – Shravan40