本章重點
· C語言概述
· C語言的優勢
· Visual Studio 2013開發環境搭建
· 編寫HelloWorld程序
C語言是一種通用的、過程式的編程語言,它具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點。在最近二十多年里,它是最廣泛的編程語言之一,被大量的運用在系統與應用軟件的開發中。本章將針對C語言的發展歷史、開發運行環境以及如何編譯并執行C語言程序等內容進行詳細地介紹。
1.1 C語言概述
每一種編程語言都有自己的發展歷史,那么做為最廣泛的編程語言之一,C語言也不例外。在眾多編程語言中,C語言有哪些區別于其他高級語言的優勢和特性呢。接下來針對C語言的由來、優勢以及其他基礎知識進行簡單地介紹。
1.1.1 計算機語言介紹
在揭開C語言的神秘面紗之前,先來認識一下什么是計算機語言。計算機語言(Computer Language)是人與計算機之間通訊的語言,它主要由一些指令組成,這些指令包括數字、符號和語法等內容,程序員可以通過這些指令來指揮計算機進行各種工作。計算機語言的種類非常多,總的來說可以分成機器語言、匯編語言、高級語言三大類。接下來,將針對這三類語言進行簡單地介紹。
1.機器語言
計算機不需要翻譯就能直接識別的語言別稱為機器語言,機器語言是低級語言,它是由二進制數組成的一串指令,故也被稱為二進制代碼語言。由于機器語言都是由二進制數組成,因此機器語言非常不便于記憶和識別。2.匯編語言
人們很早就認識到這樣的一個事實:盡管機器語言對機器來說很好懂也很好用,但是記住0和1組成的指令對程序員來說簡直就是煎熬。為了解決這個問題,匯編語言誕生了,匯編語言是面向機器的程序設計語言。用英文字母或符號串來替代機器語言,把不易理解和記憶的機器語言按照對應關系轉換成匯編指令。這樣一來,匯編語言就比機器語言更加便于程序員閱讀和理解了。
3.高級語言
由于匯編語言依然依賴硬件,使得程序員在面對新的機器時不得不學習新的匯編指令,這使程序的移植性極差,因此為了解決這一問題,計算機高級語言誕生了。
高級語言不是一門語言,而是一大類語言的統稱。它們比匯編語言更貼近人類使用的自然語言,易于人類理解、記憶和使用(可讀性好);而且和計算機的架構、指令集無關,理論上拿到不同的平臺上都可以正常使用(可移植性好),因此高級語言應用更加廣泛,現在世界上絕大多數程序員都在使用高級語言進行程序開發。常見的高級語言包括C、C++、Java、VB、C#、Python、Ruby等等。本書介紹的C語言是目前最流行、最廣泛的高級語言,也是公認的計算機編程語言元老。學好C語言,是掌握編程知識、了解計算機語言的基礎,也是求職拿高薪的敲門磚。
1.1.2 什么是C語言
C語言是一種計算機程序設計語言,它是一種面向過程的語言,同時具備高級語言和匯編語言的優點。它既可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。,這些特性使C語言成為了最受歡迎的編程語言之一。C語言自1973年問世以來,迅速的發展當然也離不開一些個人以及組織所做的貢獻。接下來,分別介紹C語言的發展歷史以及C語言標準。
1、C語言的歷史
早期的操作系統和系統軟件主要是用匯編語言編寫的,如UNIX操作系統。由于匯編語言依賴于計算機硬件,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級語言,但一般高級語言難以實現匯編語言的某些功能,而匯編語言可以直接對硬件進行操作,例如,對內存地址的操作、位(bit)操作等。人們設想能否找到一種既具有一般高級語言特性,又具有低級語言特性,并集它們的優點于一身的語言。于是,C語言就在這種情況下應運而生了,C語言一經發布立即成為國際上廣泛流行的計算機高級語言。它適合于作為系統描述語言,即用來寫系統軟件,也可用來寫應用軟件。
C語言的發展頗為有趣。它的原型ALGOL 60語言。(也稱為A語言)
1963年,劍橋大學將ALGOL 60語言發展成為CPL(Combined Programming Language)語言。
1967年,劍橋大學的Matin Richards 對CPL語言進行了簡化,于是產生了BCPL語言。
1970年,美國貝爾實驗室的Ken Thompson將BCPL進行了修改,并為它起了一個有趣的名字”B語言”。意思是將CPL語言煮干,提煉出它的精華。并且他用B語言寫了第一個UNIX操作系統。
而在1973年,B語言也給人”煮”了一下,美國貝爾實驗室的D.M.RITCHIE在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
為了推廣UNIX操作系統,1977年Dennis M.Ritchie 發表了不依賴于具體機器系統的C語言編譯文本《可移植的C語言編譯程序》。
1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,從而使C語言成為目前世界上流行最廣泛的高級程序設計語言。
1988年,隨著微型計算機的日益普及,出現了許多C語言版本。由于沒有統一的標準,使得這些C語言之間出現了一些不一致的地方。為了改變這種情況,美國國家標準學會(ANSI)為C語言制定了一套ANSI標準, 成為現行的C語言標準。
C語言發展迅速,并且成為最受歡迎的高級語言之一,主要因為它具有強大的功能。許多著名的系統軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ都是由C 語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優勢了,像PC- DOS 、WORDSTAR等就是用這種方法編寫的。
2、C語言的標準
美國國家標準學會(ANSI)于1989年通過了C語言的標準ANSI X3.159-1989,之后在1990年,國際標準化組織ISO也接受了同樣的標準(ISO9899-1990)。這標準被稱為C89或C90。兩個版本的標準只有細微的差別,因此,一般而言C89和C90指的是同一個C語言標準。
后來隨著時代的發展,1999年ANSI又通過了C99標準。C99標準相對C89做了很多修改,例如變量聲明可以不放在函數開頭,支持變長的數組等等。但由于很多編譯器(特別是在嵌入式開發領域)仍然沒有對C99提供完整的支持,因此本書將嚴格按照C89標準來進行基礎講解,在適當時會補充C99標準的規定和用法。
2011年國際標準化組織ISO發布了新的C語言標準C11(ISO/IEC 9899:2011),提高了對C++的兼容性,并引入了更多的語言特性。為什么要學習C語言
由于C語言具備簡潔、緊湊、高效、靈活、可移植、使用方便,并且能夠實現匯編語言的大部分功能等特性,因此從20世紀70年代起,C語言通過UNIX操作系統迅速發展起來,逐漸占據了大、中、小以及微型機,成為風靡世界的計算機語言。大多數軟件開發商都首選用C語言來開發系統軟件、應用程序、編譯器和其他產品。
這樣的現象一直保持了20年,直到20世紀90年代,一種代表著先進思想的語言問世,也就是C語言的超集C++,由于C++解決了C語言不能解決的諸多難題,所以許多開發商開始轉向使用C++來解決一些復雜的,規模大的項目,C語言進入一個冷落時期。
這個時期并沒有持續太長時間,隨著嵌入式產品的增多,C語言簡潔高效的特點又被重視起來,它再度流行起來,被廣泛地用于為手機、汽車、游戲機、機頂盒、平板電腦、高清電視、VDC/DVD/MP3播放器、電子字典、可視電話、數碼相機、家電控制系統等現代化設備的微處理器編程。隨著信息化、智能化、網絡化的發展,嵌入式系統技術的發展空間還會更加廣泛,而C語言的地位也會越來越高。因此,學習好C語言是很有必要的。
1.2 環境搭建
通過前面的講解,我們對C語言的發展史有了一定的了解。但是要想在計算機上開發C語言程序,首先需要搭建開發環境,開發環境中通常會提供自動編譯工具、代碼智能提示、以及代碼調試等功能。這樣的開發環境一般被稱為集成開發環境,簡稱IDE。接下來就介紹一下不同操作系統下的幾種常用IDE,以及Microsoft Visual Studio 2013 Express開發環境的搭建過程。
1.2.1 主流開發工具介紹
1、Microsoft Visual Studio
Microsoft Visual Studio是由微軟公司發布的集成開發環境。它支持C/C++、C#、F# 、VB等多種程序語言的開發和測試,功能十分強大。目前的最新版本為Visual Studio 2013,稍早的版本包括Visual Studio 2012,Visual Studio 2010等。
本書的開發工具是Visual Studio 2013 Express,它是微軟公司集成開發環境軟件Visual Studio 產品的輕量版本,它最大的特點就是完全免費,雖然沒有VS原版那么專業,缺少一些面向企業的功能,但其易學易用易上手的特點更加適合新手或學生用于學習軟件開發。如果不是專職的開發人員,那么使用完全免費的Visual Studio 2013 Express進行學習會更加簡單輕松。
2、Code::Block
Code::Block是一個免費的跨平臺IDE,它支持開發C、C++和Fortan程序。Code::Block的一大特點是它支持通過插件對IDE自身的功能進行擴展,這給予了用戶很大的靈活性。
Code::Block本身并不包含編譯器和調試器,它僅僅提供了一些基本的工具用來幫助程序員從命令行中解放出來。不過,在Code::Block的發行版本中已經以插件的形式提供了編譯和調試的功能。
3、Eclipse
Eclipse是一種廣泛使用的免費跨平臺IDE,最初由IBM公司開發,目前由開源社區的Eclipse基金會負責Eclipse的管理和維護。一開始Eclipse被設計為用于Java語言開發的IDE,現在Eclipse已經可以用來開發C、C++、Python和PHP等眾多語言。
Eclipse本身是一個輕量級的IDE,在此之上,用戶可以根據需要安裝多種不同的插件來擴展Eclipse的功能。除了利用插件支持其他語言的開發之外,Eclipse還可以利用插件實現版本控制等功能。
4、Vim
和其他IDE不太相同的是,Vim本身并不是一個用于開發計算機程序的IDE,而是一款功能非常強大的文本編輯器,它是Unix系統上vi編輯器的升級版。和Code::Block以及Eclipse類似,Vim也支持通過插件擴展自己的功能。盡管Vim并不僅僅適用在編寫程序而是可以適用于幾乎所有需要文本編輯的場合,Vim還是因為其強大的插件功能,以及高效方便的編輯特性而被稱為是程序員的編輯器。
由于Vim配置多種插件可以實現幾乎和IDE同樣的功能,因此,Vim有的時候也被程序員直接當做IDE來使用。
1.2.2 安裝Visual Studio 2013
由于Visual Studio 2013具有功能全面、界面友好等特點,本書選擇用它作為開發工具。接下來將通過具體的步驟來演示如何在Windows7系統上安裝Visual Studio 2013 Express簡體中文版。
在安裝Visual Studio 2013之前,需要通過訪問Visual Studio 2013的官方網站來獲取正版的下載資源。下載完成后,運行下載好的安裝文件,啟動安裝程序,如圖1-1所示。


圖1-1 啟動安裝程序
在圖1-1所示的界面中,可以選擇安裝程序的位置以及是否加入Visual Studio體驗改善計劃。在閱讀并同意許可條款和隱私策略之后,勾選前面的選項,出現安裝選項,如圖1-2所示。


圖1-2 安裝
點擊圖1-2界面中的安裝選項,進入下一個界面,安裝程序開始獲取安裝需要的文件,并創建系統還原點,如圖1-3所示。


圖1-3 獲取安裝文件
系統還原點創建完畢后,安裝程序會進入安裝過程,如同1-4所示。


圖1-4 進入安裝過程
程序安裝過程需要一段時間,待程序安裝完成后,會出現安裝成功的畫面,如圖1-5所示。


圖1-5 安裝成功
點擊圖1-5中的啟動選項,即可啟動安裝完成的Visual Studio,開始編寫程序。啟動后的Visual Studio界面如圖1-6所示。


圖1-6 Visual Studio 2013安裝好的界面
通過完成上述步驟,圖1-6是Visual Studio 2013安裝好的界面,如果打開了此頁面那么Visual Studio 2013已經順利安裝完成。
1.3 編寫HelloWorld程序
1.2小節通過安裝Visual Studio 2013 Express已經搭建好了C語言開發環境,下面就來體驗一下如何開發C語言程序。為了讓初學者更好地完成第一個C程序,接下來通過幾個步驟進行逐一講解。在上一小節中,我們已經通過Visual Studio 2013 Express開發工具完成了C語言開發環境的搭建。接下來,通過一個簡單的”HelloWorld”程序,來體驗一下如何使用Visual Studio 2013 Express工具開發C程序。為了讓初學者更好地完成第一個C程序,接下來通過幾個步驟進行逐一講解。
1、新建C工程
啟動Visual Studio 2013,在彈出窗口中選擇菜單【文件】→【新建項目】會出現一個【新建選項】對話框,如圖1-7所示。


圖1-7 【新建項目】窗口
在圖1-7中,選擇左邊菜單欄中的【Visual C++】,然后在右邊的窗口中選擇【Win32 控制臺應用程序】,并在【名稱】欄中輸入”HelloWorld”,其他選項保持默認,點擊【確定】按鈕就會彈出一個新的對話框【Win32應用程序向導】,如圖1-8所示。


圖1-8 【Win32 應用程序向導】窗口
在圖1-8所示的窗口中,勾選【控制臺應用程序】,然后點擊【下一步】按鈕,出現【Win32應用程序向導】的第二頁窗口,如圖1-9所示。


圖1-9 【Win32應用程序向導】第二頁
在圖1-9中,勾選【空項目】,然后點擊【完成】按鈕,至此便完成了”HelloWorld”程序的創建。
2、編寫HelloWorld程序
“HelloWorld”程序完成創建后,就可以在Visual Studio左側的【解決方案資源管理器】中看到剛剛新建的工程”HelloWorld”。在Vsual Studio里,一個【解決方案】可以包含多個項目,大家創建的HelloWorld工程就處在名稱同樣為HelloWorld的解決方案之中,如圖1-10所示。


圖1-10 HelloWorld 解決方案資源管理器
接下來在HelloWorld工程中完成創建一個名為main.c的源文件的操作。首先在圖1-10中選中【源文件】菜單上點擊右鍵,在彈出的菜單中依次選擇【添加】、【新建項.】。隨后在彈出的【添加新項 – HelloWorld】窗口里選擇【C++ 文件(.cpp)】,并在【名稱】欄中填寫”main.c”如圖1-11所示。


圖1-11 添加源代碼文件
main.c源文件創建成功后,在【解決方案資源管理器】中雙擊創建好的main.c文件,編寫一段代碼,示例如下。
#include <stdio.h>
int main()
{
printf(“Hello, worldn”);
return 0;
}
編寫完代碼后請及時保存文件:點擊【文件】菜單下的”保存 main.c”菜單項,或單擊工具欄上的【保存】按鈕即可(快捷鍵Ctrl + S)。如果當前文件中含有未保存的代碼,文件名”main.c”之前將顯示一個星號”*”。在保存源碼前,編輯區應如圖1-12所示。


圖1-12 鍵入HelloWorld程序之后的VS編輯區
(腳下留心:
在編程時需要注意區分英文標點和中文標點。C語言中只能使用英文標點符號,而不能使用中文標點符號。因此請大家在輸入代碼時關掉中文輸入法,或者切換到輸入法的英文模式下。
1.4 解析HelloWorld程序
知其然,更要知其所以然。下面就以上述示例HelloWorld程序為樣本進行庖丁解牛,共同研究C語言程序的基礎知識,為之后的進一步學習做好準備。
1.4.1 注釋
在編寫程序時,為了使代碼易于閱讀,通常會在實現功能的同時為代碼加一些注釋。注釋是對程序的某個功能或者某行代碼的解釋說明,它只在源文件中有效,在編譯程序時編譯器會忽略這些注釋信息,不會對其進行編譯,所以注釋是不會影響程序運行的。
在C語言中,以”/*”和”*/”包圍起來的部分被稱為注釋。一段注釋必須由”/*”開頭,由”*/”結尾,也可以由多行組成,中間任何字符都是組成注釋的一部分。
為了讓大家掌握如何在代碼中編寫注釋,接下來添加注釋,,具體注釋效果示例如下。
#include <stdio.h> /* 這是預處理指令 */
int main() /* 主程序開始 */
{
printf(“Hello, world”); /* 輸出字符串 */
return 0;
} /* 主程序結束 */
如何為程序添加必要且優美的注釋是一門學問。恰當的注釋有助于閱讀代碼,而不恰當的注釋往往有畫蛇添足之感,一大段編碼混亂而又沒有注釋的程序能使大家瞬間喪失閱讀下去的興趣。本書會通過示例代碼讓大家逐漸學會如何在代碼中寫出規范的注釋。
在C99標準中,規定注釋也可以采用”//”的寫法,表示這一行從”//”開始到該行末尾都是注釋內容。接下來新的注釋風格添加注釋,示例如下。
// HelloWorld Project
//
// Coded by xxx
#include <stdio.h> // 這是預處理指令
int main() // 主程序開始
{
printf(“Hello, world”); // 輸出字符串
return 0;
} // 主程序結束
閱讀上述示例會發現”//”可以更加清晰的標明注釋的起止位置,也更符合一般人的思維習慣。但是值得注意的是,很多舊的C編譯器并不支持這種注釋寫法。在開發時如果遇到了莫名其妙的報錯,很可能是”//”的寫法不被當前的編譯器支持,可以試著將其改回原有的”/* */”風格試試看。
(腳下留心:
C語言編譯器在找到文本中的”/*”之后,會尋找隨后最接近的”*/”,并將兩者之間的內容視為注釋,這意味著,如果不慎在一段已有的注釋中嵌套了新的”*/”,可能導致注釋的區域發生意外的改變,并帶來錯誤。請比較下面兩段注釋:
/*我
*喜
*歡
*C
*語
言*/
一段由”/*”和”*/”定義的注釋,編譯時VS沒有提示錯誤
/*我
*喜
*歡
*C
*語
言*/
*/
注意到在插入了新的”*/”之后,注釋的區域發生了變化。此時VS無法理解處在注釋區域外的字符”*/”,因此報錯。 修改代碼后,請一定記得修改對應的注釋,否則就會出現注釋和代碼對不上號的情況,不利于今后的維護。
1.4.2 預處理指令
在示例中,程序中的第一行代碼”#include <stdio.h>”是預處理指令。預處理指令是指由”#”開頭的一行指令。嚴格來說,預處理指令并不屬于整個程序的一部分。也就是說,編譯器在正式編譯整個程序之前,會提前處理所有的預處理指令,并把它們刪掉,這意味著最終用來編譯的程序里是不包含這些預處理指令的。
在示例中,”#include <stdio.h>”意在告訴編譯器,在真正編譯之前,需要將stdio.h這一文件的內容引入到main.c中來,并且替換掉”#include <stdio.h>”這一行。
擴展名為h的文件被稱為頭文件(Header Files),因為其中往往包含了函數或類型的聲明,且通常被放在程序的開頭處。stdio.h是標準輸入輸出頭文件,里面提供了許多和輸入、輸出相關函數的聲明。在后面用到的printf函數就是標準函數庫中的格式化輸出函數(后面幾章中將對格式化輸出加以詳細介紹),為了使用該函數,必須將stdio.h頭文件引入到main.c文件中來。
除了標準的頭文件之外,開發者也可以定義自己的頭文件。當開發包含多個模塊的復雜程序時,就會用到自定義頭文件了(后面章節將針對自定義頭文件進行講解)。
(腳下留心:
標準頭文件的文件名均為小寫。而在Windows上,文件名沒有大小寫的區分,因此使用stdio.h、Stdio.h或STDIO.H都可以正確包含到同一個文件。但是在其它對文件名大小寫敏感的操作系統中(比如Linux),使用”#include <Stdio.h>”可能就會收到編譯器”No such file or directory”的錯誤提示了。因此建議在編寫代碼時,要嚴格區分頭文件名的大小寫。
1.4.3 主函數
一般而言,main()函數被稱為程序中的主函數。所謂主函數,是指整個程序執行過程中的主體。主函數的開始標志著程序開始運行,主函數的結束意味著程序的結束(即程序退出)。除主函數之外,程序中還會有其它的函數。其它函數直接或間接地被主函數調用,以完成特定的功能。相關內容將在本書的”函數”一章中進行講解。
函數頭定義了函數的名稱、返回值以及參數列表。對于例子中的主函數而言,返回值的類型是int(不懂什么是int沒有關系,后面的”類型”一章會講到),函數名稱是main,括號里的內容是參數列表,現在括號中沒有內容,也就意味著主函數不接收任何參數。下面來看一個略為復雜一些的例子,示例如下:
int main(void)
int main(int argc, char** argv)
上述示例括號中的void表示沒有參數。在第二行代碼中,參數列表中包含了兩個參數,分別是名為argc的int型變量,以及名為argv的char**型變量?,F在不必深究這兩個參數的具體含義,只要了解主函數可以通過這兩個參數取得程序運行時得到的命令行參數就可以了。
(多學一招:空函數的妙用
在C語言中,函數體可以為空,即兩個大括號之間沒有任何語句。這樣的函數有什么作用呢?
在開發一些規模較大的程序的時候,開發者可以采用”先聲明、再使用、最后實現”的策略,即先將規劃好的函數定義寫出來,并使其函數體為空;在編寫其它函數時可以調用該;等其它函數編寫完成后,再將之前定義的空函數補全。使用這種開發方式,可以方便程序的主體迅速完成,避免在一些不太重要的、邊邊角角的編程工作上浪費時間。
1.4.4 函數調用
在以上示例中,主函數調用了一個名為printf的函數,該函數的作用是按照一定的格式向屏幕輸出信息,這個過程也被稱為”格式化輸出”。
printf函數并不是在本程序中實現的,而是來自C語言的標準庫,也被稱作標準庫函數。它的聲明可以在之前包含的stdio.h文件中找到。
圖1-13 函數調用示意
如圖1-13所示,C語言中所有的函數調用都要遵循類似的寫法:首先是函數名,之后是用括號包起來的參數列表,最后是結尾的分號。C語言是大小寫敏感的,因此在函數調用時,函數名必須和聲明函數時使用的函數名稱保持大小寫一致。參數列表使用英文的逗號”,”來分隔每個參數,末尾參數后無需輸入逗號。C語言所有語句都需要使用分號作為結尾。
(動手體驗:替換printf的參數列表
請試著將printf的參數列表替換為””This is my %dnd program: %s %s”, 2, “Hello,”, “world””(不包括最外面的中文雙引號),然后重新編譯運行HelloWorld程序,并查看輸出的結果。輸入時請注意以下幾點:
· 空格的位置;
· 逗號的位置;
· 不要使用中文標點。
1.4.5 解決錯誤
對于初學者而言,寫程序時犯錯是非常正常的,人非圣賢,孰能無錯?如果代碼中有錯誤,VS會及時地用橘紅色波浪線為開發者標記出來。如果開發者不解決錯誤,之后的編譯是無法通過的。本小節,給大家介紹一下使用VS開發程序,會遇到的一些常見錯誤信息,以及應該如何處理它們,示例如下。
include <studio.h>
int main()
{
printf(“Hello, world”)
Return 0;
}
把這段代碼原封不動地輸入到main.c中,替換掉原來的內容,如圖1-14所示。


圖1-14 VS指出了程序中的錯誤
將鼠標指到第一行上會看到VS提示的錯誤信息,這意味著編譯器無法理解那些代碼。大家可以試著編譯一下,看看會有怎樣的錯誤提示。請點擊”生成”菜單中的”生成解決方案”菜單項,或直接按鍵盤快捷鍵F7來重新編譯HelloWorld工程。應當在控制臺窗口中看到輸出,如圖1-15所示。
圖1-15


錯誤程序在VS中編譯后的輸出
在圖1-15中,需要我們注意的是”main.c(1): error C2143: 語法錯誤 : 缺少”{“(在”<“的前面)”這一段話,該句話表明了”HelloWorld”程序中的錯誤所在,接下來,對這句話進行詳細的分析。
,如圖1-16所示。
圖1-16 錯誤提示信息拆解
圖1-16中,VS編譯器的每一條錯誤提示信息可以被拆解成四部分,分別是文件名、行號、錯誤編號和錯誤原因。開發者可以通過文件名和行號定位到出現錯誤的具體位置,然后根據錯誤原因分析出代碼的問題所在。
圖1-16中的錯誤原因是在”<“左邊遇到了語法解析錯誤,具體是什么錯誤呢?可以看到main.c的第一行,在”<“的右邊只有一個”include”。原來是漏掉了井號”#”。當然,現在的編譯器還沒有智能到告訴開發者”漏掉了一個#”,不過一般而言,指出錯誤的所在位置就已經足夠改正程序錯誤了。
在”include”之前加上”#”后,重新編譯,又一條錯誤提示信息出現了,如圖1-17所示:


圖1-17 新的錯誤
這條錯誤原因很簡單,是說編譯器沒有找到”studio.h”這個文件。原來是在程序中把”stdio.h”拼錯了,改正就可以了。
上述案例都是編譯時發生的錯誤,可以通過閱讀編譯器的提示信息,。仔細分析原因,改正代碼,重新編譯。重復這幾個步驟,直到程序編譯成功。
有時候,一個小小的錯誤(比如少輸入了一個分號)會導致巨大的災難(看到成百上千條錯誤信息)。面對這種情況時不要慌張,只要從前到后把能發現的錯誤逐個改正。暫時無法確定的錯誤就不去管它,重新編譯即可,編譯后出現的錯誤肯定比前一次更少。
1.5 編譯與運行HelloWorld程序
HelloWorld程序編寫完成后,就需要對HelloWord程序進行編譯和運行操作,首先點擊”生成”菜單,選擇”生成解決方案”選項,以編譯和鏈接當前程序。VS界面下方的”輸出”窗口會顯示生成進度。當”輸出”窗口中出現”成功 1 個,失敗 0 個,最新 0 個,跳過 0 個”的提示時,即表示編譯成功完成。如果看到”失敗 1 個”的字樣,則意味著main.c程序中有問題,請回到上一小節仔細對照原程序除錯。完整的hello world程序如例 1-1所示。
例1-1完整的hello world程序
1 #include <stdio.h>
2 int main()
3 {
4 printf(“Hello, worldn”);
5 return 0;
6 }
例1-1中當main.c程序編譯成功后,可以通過選擇”調試”菜單下的”開始執行(不調試)”選項來執行程序,之后就可以在彈出的控制臺窗口中看到輸出內容,如圖1-18所示:


圖1-18 HelloWorld運行結果
1.6 本章小結
本章首先講解了C語言的基礎知識,然后講解了如何搭建VS2013開發環境,最后講解了如何開發一個C語言程序。通過本章的學習,大家能夠掌握如何搭建開發環境,以及如何編寫一個C語言程序,通過這個程序的編寫,大家會對C語言程序有一個簡單的認識,并為后面的學習打下堅實的基礎。
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。