第 1 講 之 2 A whole new world
Topic: C 語言程式的基本架構 (1)
現在回到我們剛剛輸入的程式上,我們來看看到底它是如何工作的,先看第一行:
/* hello.c */
這種用 /* 和 */ 括起來的東西叫註解 (remark),是用來註解程式用的。註解會被編譯器完全地忽略,這是 C 語言比較特殊的地方,請特別注意。好的程式應該有簡明恰當的註解。再來看到:
#include <stdio.h>
以 # 開頭的東西叫編譯指示 (compiler directives),它的作用是指示編譯器照著編譯指示去編譯你的程式。#include 的意思就是在編譯這個程式之前,請編譯器先引入標頭檔 (header file) 加以編譯,編譯完之後再編譯本程式下面的部份。所以說呢,#include <stdio.h> 的意思就是叫 compiler 先編譯 stdio.h 這個檔然後再編譯下面的程式。我們以一個簡單的流程圖表示如下:
gcc 編譯 hello.c
↓
看到了 #include <stdio.h>
↓
gcc 去找尋 stdio.h
↓ 找到了
gcc 先編譯 stdio.h
↓ 編譯完畢
gcc 再編譯 hello.c 剩下的部份
↓ 編譯完畢
gcc 呼叫 ld 來連結
↓
hello 這個程式製作完畢
你也可以把 #include <stdio.h> 寫成 #include "/usr/include/stdio.h",可以得到同樣的效果。那麼,#include 後面接角括號 < > 和雙引號 " " 有何不同呢?角括號括起來的檔案通常表示那個檔案是個標準標頭檔 (standard header file)。如果是標準標頭檔,編譯器會到某個固定的地方去找這個檔案(至於是那個地方那就不一定了,看當初安裝系統的時候是怎麼裝的)。用雙引號括起來的檔案通常表示那是個使用者自定的標頭檔 (user-defined header file),所以你必須給編譯器完整的路徑 (filepath) 它才能找的到。
沒有留言:
張貼留言