C語言程式設計基本規範

-柚子皮-發表於2014-05-09

http://blog.csdn.net/pipisorry/article/details/25404807

不要使用void main和system("pause")

1 : "void main"不是C++的標準進入點
標準只支援兩種宣告
第一種"int main"
第二種"int main(int argc, char *argv[])"
宣告"void main"可能會有非預期的結果
這點不只適用於C++,C也一樣管用
這是教科書的錯?或者是教授們的錯?

2 :不要用system("pause")來暫停,可以改用std::cin.get或getchar()
為何不要用system("pause")?
有兩個理由
一 : 不具可移植性
二 : 這東西很貴

貴在那裡?讓我們來看看system("pause")的流程
1 : 暫停你的程式
2 : 在sub-process中啟動OS
3 : 尋找要執行的命令併為之分配記憶體
4 : 等待輸入
5 : 回收記憶體
6 : 結束OS
7 : 繼續你的程式

[不要再用system("pause")和void main了]

系統讓C++控制檯程式停下來,實現暫停功能

一、針對Microsoft

#include   <stdlib.h>
system( "PAUSE ");
--------------------
getchar();
---------------------
Sleep();

二、針對Linux
getchar();
皮皮blog


exit引數代表的意思

他就是一個給外部程式一個值,外部程式利用這個值可以相應的捉某些動作,至於這個值代表的是什麼,由你自己決定,不管是1代表正常還是0代表正常,都一樣,但是在Windows平臺一般是0代表正常,這只是個習慣問題.假如是你開發外部程式呼叫你自己的Java程式,那麼使用10000代表正常退出也是無所謂的,只要你理解就可以了,但是還是按照習慣來的比較好

C 語言的設計之初就是為 Unix 系統設計的,而這個系統是『很多程式互相配合』搭配成一個系統。

每個執行著的程式都是程式,而程式就會有父程式,父程式通常是直接啟動你的程式,父程式死亡的程式會被 init 收養,其父程式變為 init,而 init 的父程式是程式 0,程式 0 則是系統啟動時啟動的第一個程式。
exit() 裡面的引數,是傳遞給其父程式的。對父程式來說,你的程式彷彿是一個函式,而函式可以有返回值。


所以回答第一個問題:exit() 的引數,是給自己的父程式使用的。通常一個程式的父程式可能是任何程式,因此我們無法預期我們的父程式是否規定必須要有這個返回值,那麼我們應當提供這個返回值,以保證不同的父程式的需求得到滿足。


一個典型的例子是 make,Makefile 對於一個 target 下面有多條順序執行的語句,而 make 作為父程式,會檢查每個語句的返回值是否為 0 ,遇到任何一個非 0 值,都會停止當前 rule 的執行。而我們知道,make 實際上可以執行任何命令任何程式,因而任何被 make 呼叫的程式必須有正確的返回值。

另外一個問題,為什麼要使用 exit() 函式?

答:是歷史原因,雖然現在大多數平臺下,直接在 main() 函式裡面 return 可以退出程式。但是在某些平臺下,在 main() 函式裡面 return 會導致程式永遠不退出(因為程式碼已經執行完畢,程式卻還沒有收到要退出的指令)。換句話說,為了相容性考慮,在特定的平臺下,程式最後一行必須使用 exit() 才能正常退出,這是 exit() 存在的重要價值。

from: http://blog.csdn.net/pipisorry/article/details/25404807

ref: 

相關文章