搜索
熱搜: 活動 交友 discuz
查看: 3056|回復: 0
打印 上一主題 下一主題

[教學] C的前置處理器

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-9-4 08:57:40 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
(preprocessor)我 們 在 寫 程 式 的 時 候 , 常 常 會 碰 到 某 些 資 料 重 覆 使 用 或 是 某 些 程 式 片 段 因 特 定 的 條 件 下 須 放 棄 , 如果 以 正 常 的 方 式 來 寫 作 程 式 , 可 能 會 增 加 無 謂 的 程 式 片 段 , 使 的 程 式 笨 重 不 堪 , 但 如 果 能 好好 運 用 C 語 言 所 提 供 的 前 置 處 理 器 , 則 上 述 的 狀 況 將 改 善 許 多 . 這 個 功 能 並 非 C 語 言 本 身 的格 式 , 但 仍 為 編 譯 程 式 所 能 接 受 . 對 前 置 處 理 器 的 解 釋 , 如 圖 所 示 , 因 為 它 是 在 程 式 編 譯 之前 執 行 , 所 以 顧 名 思 義 稱 之 前 置 處 理 .
                              
l

<1> 前 置 處 理 器 的 格 式 如 下:
#前置處理器名稱
處理內容 <2> .
<3> , 使 , .


前置處理器之敘述

檔案的含入

#include

字串的置換/巨集定義

#define / #undef

#if .... #elif .... #else .... #endif

#ifdef (#ifndef) .... #else .... #endif

l
#include(檔 入) , 使 . :


<1> #include "檔案名稱" : 此表示系統將會到目前的目錄 (路徑 )
下尋找所指定的檔案 ,如果找不到 ,則
會去系統設定的目錄底下尋找 .
<2> #include <檔案名稱> : 此表示系統將會到系統設定的目錄底下
尋找所指定的檔案 .  
Example: #include < stdio.h >
#include "def.h"
main()
{
printf("PI=%2.5f\n",PI);
printf("a+b=%d\n",a+b); }
-- def.h 的檔案內容 --
#define PI
3.14159
#define a
10
#define b
20
----------------------
執行結果 :
PI=3.14159
a+b=30
l
#define(字 / 義)與 #undef<1>
#define
使
:其主 要 之 功 能 是 以 簡 單 的 名 稱 取 代 某 些 特 定 的 常 數 或 字 串 , 函 數 , 建 立 更 簡單 更 易 懂 的 程 式 . 語 法 如 下 :



#define 巨集名稱 常數或函式或字串 <2>
#undef
使
: #define .

#undef
巨集名稱
Example1: #include < stdio.h >#define PI 3.14159
main()
{
printf("PI=%2.5f",PI);
}
執行結果 :
PI=3.14159
Example2 :
#include < stdio.h >
#define add(a,b) a+b
void main(void)
{
int i,j,k;
i=2;
j=3;
k=add(i,j);
printf("i+j=%d\n",k);
} 執行結果 :
i+j=5
Example3: #include < stdio.h >#define pstring "This is my first C program.\n"
void main(void)
{
printf(pstring,1);
}   執行結果 :
This is my first C program.
Example4 :
#include < stdio.h >
#define
compare(a,b)

\
if ( a > b )
\
printf("a > b");
\
else
\
if ( a < b )
\
printf("a < b");\
else
\
printf("a = b");
void main(void)
{
int a,b;
a=5;
b=10;

compare
(a,b);
}

執行結果 :
a < b
Example5 :

#include < stdio.h > #define TURBOC
void main(void)
{
#ifdef TURBOC
printf("Borland C compiler.\n");
#endif
#undef TURBOC
#ifndef TURBOC
printf("MircoSoft C compiler.\n");
#endif
}

執行結果 :
Borland C compiler.
MircoSoft C compiler.
l
<1> 條件 式 的 編 譯, 此 用 法 的 最 大 特 色 在 於 其 敘 述 不 僅 可 以 放 在 程 式 的 頂 端 , 亦可 將 其 敘 述 放 置 於 程 式 中 . 以 下 所 列 (1) ,(2) ,(3) 項 為 條 件 式 編 譯 的 成 員 .



(1) #if 和 #endif
(2) #else / #elif
(3) #ifdef 和 #ifndef <2> , if ... then ... else , 使 .


Example1:
#include < stdio.h >
#define value
99  
void main(void)

{
#if value < 100
printf("value < 100");
#else
printf("value >= 100");
#endif
}
執行結果 :
value < 100
Example2:
#include < stdio.h >
#define value
100
void main(void)
{
#if value < 100
printf("value < 100");
#elif value > 100
printf("value > 100");
#else
printf("value = 100");
#endif
}
執行結果 :
value = 100


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-6-25 18:54 , Processed in 0.039922 second(s), 17 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表