c++學習筆記=>萬丈高樓平地起=>ex1:Hello,World!
1.依慣例我們的第一個程式,就是利用c++寫一個輸出”Hello, World!”的簡單程式。
2.打開Microsoft Visual Studio 2005,點選功能表上檔案/新增專案,建立1個c++語言 win32主控台的專案
3.Microsoft Visual Studio 2005的精靈會依我們的選擇建立一個win32主控臺程式的基本架構。從方案總管的視窗我們可以看到下圖的檔案架構,在這個圖示中可以看到,Microsoft Visual Studio 2005的精靈自動建立三種類型的檔案分類:原始程式檔(.cpp)、標頭檔(.h)、資源檔。以下就這三種類型作簡單說明。
4.標頭檔(.h):各種程式語言的發展都一樣,都是從簡單到複雜,簡單的時期尚可能一切程式碼自己來,到了複雜階段就要眾人的分工,如何將眾人各自分工的成果方便提供他人應用且便於修改維護,c與c++就採取標頭檔這種方式,像ex1範例專案中stdafx.h這個檔案就是這個專案程式主要的標頭檔,簡單的說標頭檔像是圖書館的目錄索引一樣,我們需要某些參考書籍,可以透過這個索引可以找到我們要的書籍資料,而不需要將圖書館所有的書都搬出來。標頭檔可以告訴編譯器去找到程式中所要用的程式碼,這樣程式撰寫不需要重複寫入相同的程式碼,標頭檔通常和原始程式檔配合,每個原始程式檔通常會有一個相對應的標頭檔,標頭檔內通常含有函式、變數其他識別符號的前置宣告或定義。更詳細的說明可以參考維基百科上的解釋。
5.原始程式檔(.cpp):主要的程式內容所在。ex1這個專案有兩個原始程式檔;stdafx.cpp與ex1.cpp
打開stdafx.cpp這個檔案會發現只有以下的內容
// stdafx.cpp : 僅包含標準 Include 檔的原始程式檔 #include "stdafx.h" // TODO: 在 STDAFX.H 中參考您需要的任何其他標頭,
|
每行的開頭如果有//這個標記,代表這一行的內容是程式註解,在編譯器編譯的過程會跳過,如果要多行註解可用/*與*/,將要註解的內容包括在內。
所以在stdafx.cpp 這檔中其實只有一行 #include "stdafx.h" ,#include這個是編譯指令,告訴編譯器stdafx.cpp這個檔案有引用"stdafx.h" 這個檔案的內容。
stdafx.h這個檔案的內容如下,其中#include <stdio.h> 所引用的stdio.h是與標準輸出入相關的函式都在這標頭檔中定義:
// stdafx.h : 可在此標頭檔中包含標準的系統 Include 檔, #pragma once #ifndef _WIN32_WINNT // 允許使用 Windows XP (含) 以後版本的特定功能。 #include <stdio.h> //這標頭檔我們 // TODO: 在此參考您的程式所需要的其他標頭
|
stdafx.cpp 這檔案看起來好像沒甚麼用,如果沒有這個檔案會如何?試試看如果把這個檔案移出專案,進行編譯會有甚麼狀況?會出現以下的錯誤訊息。
這錯誤的起因是因為Microsoft Visual C++ 2005為了加速程式的編譯,Microsoft Visual C++ 2005的精靈會預設『使用先行編譯標頭檔』。在專案第一次進行編譯時會執行先行編譯標頭檔的程序(在專案屬性中可找到該設定)產生所謂的先行編譯標頭 (.PCH) 檔。這個程序的目的有助於加速編譯程式檔案,如果專案某些檔案在專案中不會異動(如一些系統提供的標頭檔stdio.h、tchar.h…等等),則不用每次編譯專案都重新編譯一次,直接引用先行編譯標頭 (.PCH) 檔。所以stdafx.cpp 這個檔案的目的主要是為了告訴編譯器產生先行編譯標頭 (.PCH) 檔。
ex1.cpp這個與專案同名的原始程式檔,是程式進入點所在(_tmain等同於main),也就是一個程式開始執行的位置;_tmain是一個函式,甚麼是函式?簡單的說就是為了達到某些功能;例如計算學生成績總平均,我們把可以達成這個功能的程式碼寫在一個獨立的區塊,然後用一個名字代表這個區塊,每次要使用計算學生成績總平均,只要在程式中寫入這個函式的名字,即可代替整個程式碼區塊。函式除了名稱之外,尚包括回傳值型態、參數列、與函式主體部分(大括號{}所包括的範圍)以下程式碼為例
C或C++的程式都是由一個特殊的函式開始執行,這個特殊的函式通常命名為main,在使用unicode字元集下改用wmain代替main,但這裡為什麼會用_tmain,原因是為了方便在unicode與非unicode中切換,vc中已經定義一個巨集(在tchar.h這個標頭檔中定義,所以如果不#include這個檔,將會產生錯誤),以_tmain取代main與wmain,在進行編譯時這個巨集會自動依照選擇的字集切換main或wmain。
// ex1.cpp : 定義主控台應用程式的進入點。 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[])
|
這個檔案一樣也引用這標頭檔"stdafx.h"
我們在這大括號中return 0;這行前加入
printf(“Hello, World!”);記得要在句尾加入分號(;)表示一行程式的終止。
// printf這個函式可以將字串輸出至螢幕 ,可以在stdio.h這個標頭檔找到它的定義
// int printf(
// const char *format [,
// argument]...
//);
// ex1.cpp : 定義主控台應用程式的進入點。 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) printf(“Hello, World!”); return 0;
|
執行Microsoft Visual C++ 2005 建置/編譯,我們的第一個程式就完成了!
在debug資料夾中我們會看到
其中ex1.exe就是我們要的,為了方便看到執行結果,我們用記事本程式寫一個文字檔存成window的批次檔(副檔名為.bat)
我們把它存在debug這個目錄與ex1.exe一起,在視窗下用滑鼠點兩下執行這個do.bat批次檔,即可看我們第1個向世界問好的程式的執行結果!
6.第三種檔案類型為資源檔,包括程式會用到的各種文字資料、圖片、圖示(ICON、或滑鼠游標)、註冊機碼、視窗對話盒等。這些在視窗程式設計會經常使用。
歡迎引用,請注明來源出處!