2010年9月1日 星期三

前置處理器 " # "


"前置處理器"!?
有些人可能不懂什麼是前置處理器,在此先用下圖來簡單說明一下

不管是 C or C++ 每個程式最上頭幾乎都會有#include#define#undef...等
本篇將對下列前置處理器名稱進行說明
1.#include
2.#define
3.#undef
4.#if
5.#endif
6.#else
7.#elif
8.#ifdef
9.#ifndef


1.#include 應該是大家最常見的,通常用來嵌入其它檔案
例:
#include <stdio.h>   (內建函式庫使用< >來include)
#include "highgui.h" (自己建立的函式庫使用" "來include)

2.#define 用來"定義"常數 or 函式 or 字串
例:
#define PI 3.141592

3.#undef 用來"取消定義"
例:
#undef PI

4.#if 如同程式中的if
例:
#if (a<100)
printf("a小於100");


5.#endif 結束if敘述句
例:
#if (a<100)
printf("a小於100");
#endif


6.#else 如同程式中的else
例:
#if (a<100)
printf("a小於100");
#else
printf("a大於100");
#endif


7.#elif 如同程式中的else if
例:
#if (a<100)
printf("a小於100");
#elif (a>100)
printf("a大於100");
#else
printf("a等於100");
#endif


8.#ifdef 條件必須先被定義過
例:
#define data
#ifdef data

printf("有定義data");
#endif


9.#ifndef 條件不能被定義
例:
#ifndef data
printf("未定義data");
#endif


怕有人對89點還不太懂,在此用下列例子來再一次講解
例:
#define TURBOC    //(定義TURBOC)
int main()
{
  #ifdef TURBOC   //(因為有定義TURBOC所以此條件成立)
      printf("Borland C compiler.\n");
  #endif          //(結束#ifdef)
  #undef TURBOC   //(消除TURBOC定義)
  #ifndef TURBOC  //(因為TURBOC沒被定義所以此條件成立)
      printf("MircoSoft C compiler.\n");
  #endif          //(結束#ifdef)
}

 
執行結果:

Borland C compiler.
MircoSoft C compiler.


沒有留言: