對於一個 C 程式 編譯之前,
C 編譯器會先處理 C 程式 中含有 #define、#undef、#if、#ifdef、#ifndef、#endif、#elif、#else 及 #include 敘述,
將之置換成一新 C 程式,
再將之編譯 成一 assembly 程式,
再轉成 machine code(或 object code)。
再經由 linker 變成一執行檔。
C/C++包含一些前置處理的指令
均是以#為開頭的指令
以下均是前置處理的指令
#include
把某個檔案整個放入目前的位置。
例:
#include <stdio.h>
就是把stdio.h整個放到這一個指令的位置
#define
把變數定義成某一個常數
#define MAX 5
在compiler的時候就是把MAX直接由5取代
#undef
解除變數的定義
#undef MAX
#if
#if !define(FILE1)
#define FILE1 "file1.h"
#include FILE1
#endif
以上是避免檔案重複include同一個檔案#if defined (XXX) || defined (YYY)
...
#endif
當有定義XXX或是有定義YYY時,會把...的部分的程式碼加入編譯
#ifndef
#ifndef MAX
判斷MAX是否有被定義過,若沒有則執行此行以下的指令
#ifdef
#ifdef MAX
判斷MAX是否有被定義過,若有則執行以下的指令
#endif
表示#ifndef或#ifdef或#if的結尾
#else
與if相關的前置處理指令配合使用~#ifdef MAX
...
#else
...
#endif#if MAX = 2
...
#elif MAX = 3
...
#else
...
#endif
[2009.12.06 補充]
#error
#pragma
[Live-MAN] #pragma 預處理指令
參考資料:
C前置處理
Live-MAN - #pragma 預處理指令
C# 前置處理器指示詞
前置處理器
前處理指令
2008年10月4日 星期六
[Live-MAN] 前置處理指令
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言