C 語言初學教材 - 第一章 前置處理

簡單的例子的程式碼如下

#include <stdio.h>

int main(void)
{
    int month, day, hour, min;
    char *name;
    
    month = 7;
    day = 27;
    hour = 9;
    min = 45;
    name = "kaiching";
    
    printf("\n\n今天是 %d 月 %d 日\n", month, day);
    printf("現在是上午 %d:%d\n", hour, min);
    printf("哈囉, %s!\n\n", name);
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:csimple.c
    功能:簡單顯示訊息的例子
    作者:張凱慶
    時間:西元2010年7月 */


我們把注意力放在第 1 行,也就以下這張圖的「前置處理區」



C 程式在編譯前可以先進行前置處理 (preprocessing) ,所謂的前置處理包括引入標頭檔 (header file) 、定義常數 (constant) 或巨集 (macro) 、條件式編譯等。


若要使用 C 語言標準函數庫中的功能,就需要先引入相關的標頭檔。此例中,由於我們用到函數 printf() ,這是 C 語言用來將格式化字串傳送到標準輸出裝置的函數,而這個函數原型宣告在標頭檔 stdio.h 中,因此我們要用到這個函數時,就得在前置處理時先引入。


井字號加上 include
#include <stdio.h>


這是前置處理器的指令,作為引入標頭檔之用,注意,引入標準函數庫是用角括號 < > 將標頭檔圍起來,若是引入自己寫的標頭檔,就要用雙引號 " " ,例如
#include "my_header.h"


這便會將自己寫的 my_header.h 引入原始碼當中,好讓編譯器在編譯前先將 my_header.h 中定義的東東囊括進來。


標頭檔通常會放往後開發程式所共同需要的東東,例如常數、巨集、結構函數原型的定義放在標頭檔中,由於這些其他程式也可能會用到,因此放在某一標頭檔中,然後就可以讓其他程式以相同方式利用囉!這是重新利用已經完成程式的方法,不需要重新再開發,也不需要重複相同的程式碼。


標準函數庫就是以這樣的概念建置的,許多經常用到的功能都已經先放在標準函數庫的標頭檔之中,因此需要用到這些功能時,只需要引入標準函數庫的標檔就可以使用囉!


問題與討論
  1. 前置處理可以進行哪些工作呢?
  2. 有哪些常用功能可以在標準函數庫裡找到呢?
  3. 標頭檔的功能是什麼?
  4. 為什麼要避免重複的程式碼出現在程式中呢?




沒有留言: