每個(gè)C++程序都包含一個(gè)或多個(gè)函數(shù)(function),其中的一個(gè)函數(shù)的名稱必須是main。一個(gè)函數(shù)由一系列執(zhí)行函數(shù)功能的語(yǔ)句(statement)組成。操作系統(tǒng)通過(guò)調(diào)用main函數(shù)來(lái)執(zhí)行程序。這個(gè)函數(shù)執(zhí)行它的組成語(yǔ)句并給操作系統(tǒng)返回一個(gè)值。
下面是一個(gè)簡(jiǎn)單的main函數(shù),它沒(méi)有返回值:
int main()
{
return 0;
}
操作系統(tǒng)利用main函數(shù)返回的值判斷程序執(zhí)行成功還是失敗。返回0表明成功了。
Main函數(shù)很特殊,其中最重要的是這個(gè)函數(shù)必須存在于每個(gè)C++程序中,而且它是操作系統(tǒng)明確調(diào)用的一個(gè)函數(shù)。
我們定義main函數(shù)的方式與定義其它函數(shù)是一樣的。函數(shù)定義說(shuō)明了四個(gè)部分:返回類型、函數(shù)名稱、括號(hào)中帶有的參數(shù)列表(可能為空)和函數(shù)主體。Main函數(shù)可能包含一組參數(shù)。在上面的定義中,參數(shù)列表是空的。
上面的main函數(shù)需要一個(gè)int類型的返回類型,它表示整型。整型是內(nèi)建的(built-in)類型,這意味著這種類型是語(yǔ)言所定義的。
函數(shù)定義的最后一部分(函數(shù)主體),是一組以波浪括號(hào)(curly brace)開(kāi)始,以波浪反括號(hào)結(jié)束的語(yǔ)句塊:
{
return 0;
}
我們的程序中的一條語(yǔ)句是return,它是用于終止函數(shù)的語(yǔ)句。
注意
請(qǐng)注意return語(yǔ)句后面的分號(hào)。在C++中分號(hào)標(biāo)志著大多數(shù)語(yǔ)句的結(jié)束。它們?nèi)菀妆缓雎裕绻浟丝赡軐?dǎo)致難以理解的編譯器錯(cuò)誤信息。
當(dāng)return包含一個(gè)值(例如0)的時(shí)候,這個(gè)值就是函數(shù)的返回值。返回值的類型必須與函數(shù)的返回類型相同或者必須能夠轉(zhuǎn)換成那種類型。在例子中main的返回類型是整型,而值0也是整型的。
在大多數(shù)系統(tǒng)中,main的返回值是狀態(tài)標(biāo)識(shí)。返回值為0表明main成功執(zhí)行了。其它的返回值的意義由操作系統(tǒng)來(lái)定義。通常非0的返回值表明發(fā)生了錯(cuò)誤。每個(gè)操作系統(tǒng)都由自身的、用于告訴用戶main函數(shù)返回值的途徑。
1、編譯和執(zhí)行程序
我們?cè)诰帉?xiě)程序之后需要編譯它。編譯程序的方法依賴于操作系統(tǒng)和編譯器。如果你想了解編譯器工作的細(xì)節(jié)信息,那么需要查看參考或者求助同事。
很多基于PC的編譯器都在集成開(kāi)發(fā)環(huán)境(IDE)中運(yùn)行,同時(shí)它還綁定了相關(guān)的建立和分析工具。這些環(huán)境對(duì)于開(kāi)發(fā)復(fù)雜的程序有很大的幫助,但是需要我們花大量的時(shí)間來(lái)學(xué)習(xí)如何高效率地使用它們。很多環(huán)境都包含了鼠標(biāo)指向和點(diǎn)擊(point-and-click)界面,它允許程序員編寫(xiě)程序并使用多種菜單來(lái)編譯和運(yùn)行程序。本文沒(méi)有介紹這一方面的內(nèi)容。
很多編譯器(包括隨著IDE發(fā)布的),提供了命令行接口。除非你對(duì)編譯器IDE的使用非常熟悉,否則使用命令行接口更加容易使用編譯器。使用命令行接口可以避免在學(xué)習(xí)某種語(yǔ)言之前需要先學(xué)習(xí)IDE的開(kāi)銷。
程序源文件命名習(xí)慣
無(wú)論使用命令行接口還是IDE,大多數(shù)編譯器都希望被編譯的程序存儲(chǔ)在文件中。程序文件一般稱為源文件。在大多數(shù)系統(tǒng)中,源文件的名稱包含兩個(gè)部分--文件名(例如prog1)和擴(kuò)展名。按照習(xí)慣,擴(kuò)展名表明該文件是一個(gè)程序。擴(kuò)展名通常表明了程序是用哪種語(yǔ)言編寫(xiě)的,應(yīng)該選擇哪種編譯器來(lái)運(yùn)行。我們用來(lái)編譯本文中的示例文件的系統(tǒng)把擴(kuò)展名.CC作為C++程序,因此我們把程序保存為:prog1.cc
C++程序文件的擴(kuò)展名依賴于你所使用的編譯器。其它一些命名習(xí)慣還包括:
prog1.cxx
prog1.cpp
prog1.cp
prog1.C
下面是一個(gè)簡(jiǎn)單的main函數(shù),它沒(méi)有返回值:
int main()
{
return 0;
}
操作系統(tǒng)利用main函數(shù)返回的值判斷程序執(zhí)行成功還是失敗。返回0表明成功了。
Main函數(shù)很特殊,其中最重要的是這個(gè)函數(shù)必須存在于每個(gè)C++程序中,而且它是操作系統(tǒng)明確調(diào)用的一個(gè)函數(shù)。
我們定義main函數(shù)的方式與定義其它函數(shù)是一樣的。函數(shù)定義說(shuō)明了四個(gè)部分:返回類型、函數(shù)名稱、括號(hào)中帶有的參數(shù)列表(可能為空)和函數(shù)主體。Main函數(shù)可能包含一組參數(shù)。在上面的定義中,參數(shù)列表是空的。
上面的main函數(shù)需要一個(gè)int類型的返回類型,它表示整型。整型是內(nèi)建的(built-in)類型,這意味著這種類型是語(yǔ)言所定義的。
函數(shù)定義的最后一部分(函數(shù)主體),是一組以波浪括號(hào)(curly brace)開(kāi)始,以波浪反括號(hào)結(jié)束的語(yǔ)句塊:
{
return 0;
}
我們的程序中的一條語(yǔ)句是return,它是用于終止函數(shù)的語(yǔ)句。
注意
請(qǐng)注意return語(yǔ)句后面的分號(hào)。在C++中分號(hào)標(biāo)志著大多數(shù)語(yǔ)句的結(jié)束。它們?nèi)菀妆缓雎裕绻浟丝赡軐?dǎo)致難以理解的編譯器錯(cuò)誤信息。
當(dāng)return包含一個(gè)值(例如0)的時(shí)候,這個(gè)值就是函數(shù)的返回值。返回值的類型必須與函數(shù)的返回類型相同或者必須能夠轉(zhuǎn)換成那種類型。在例子中main的返回類型是整型,而值0也是整型的。
在大多數(shù)系統(tǒng)中,main的返回值是狀態(tài)標(biāo)識(shí)。返回值為0表明main成功執(zhí)行了。其它的返回值的意義由操作系統(tǒng)來(lái)定義。通常非0的返回值表明發(fā)生了錯(cuò)誤。每個(gè)操作系統(tǒng)都由自身的、用于告訴用戶main函數(shù)返回值的途徑。
1、編譯和執(zhí)行程序
我們?cè)诰帉?xiě)程序之后需要編譯它。編譯程序的方法依賴于操作系統(tǒng)和編譯器。如果你想了解編譯器工作的細(xì)節(jié)信息,那么需要查看參考或者求助同事。
很多基于PC的編譯器都在集成開(kāi)發(fā)環(huán)境(IDE)中運(yùn)行,同時(shí)它還綁定了相關(guān)的建立和分析工具。這些環(huán)境對(duì)于開(kāi)發(fā)復(fù)雜的程序有很大的幫助,但是需要我們花大量的時(shí)間來(lái)學(xué)習(xí)如何高效率地使用它們。很多環(huán)境都包含了鼠標(biāo)指向和點(diǎn)擊(point-and-click)界面,它允許程序員編寫(xiě)程序并使用多種菜單來(lái)編譯和運(yùn)行程序。本文沒(méi)有介紹這一方面的內(nèi)容。
很多編譯器(包括隨著IDE發(fā)布的),提供了命令行接口。除非你對(duì)編譯器IDE的使用非常熟悉,否則使用命令行接口更加容易使用編譯器。使用命令行接口可以避免在學(xué)習(xí)某種語(yǔ)言之前需要先學(xué)習(xí)IDE的開(kāi)銷。
程序源文件命名習(xí)慣
無(wú)論使用命令行接口還是IDE,大多數(shù)編譯器都希望被編譯的程序存儲(chǔ)在文件中。程序文件一般稱為源文件。在大多數(shù)系統(tǒng)中,源文件的名稱包含兩個(gè)部分--文件名(例如prog1)和擴(kuò)展名。按照習(xí)慣,擴(kuò)展名表明該文件是一個(gè)程序。擴(kuò)展名通常表明了程序是用哪種語(yǔ)言編寫(xiě)的,應(yīng)該選擇哪種編譯器來(lái)運(yùn)行。我們用來(lái)編譯本文中的示例文件的系統(tǒng)把擴(kuò)展名.CC作為C++程序,因此我們把程序保存為:prog1.cc
C++程序文件的擴(kuò)展名依賴于你所使用的編譯器。其它一些命名習(xí)慣還包括:
prog1.cxx
prog1.cpp
prog1.cp
prog1.C

