歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言的預處理命令

C語言的預處理命令

日期:2017/3/1 9:25:38   编辑:Linux編程

C語言編譯器處理時經過的第一個步驟是預處理,就是從.c文件處理為.i文件。在預處理時編譯器做了一些展開替換的處理。

  1>頭文件展開,即將#include "stdio.h"類似的文件展開。

  2>宏定義的替換工作,即將程序中的宏定義內容替換好。

#include"stdio.h"

#define R 10

int main()

{

int a = R;

}

  經過預處理之後代碼變為

//...stdio.h裡的內容未展示

//宏定義的地方已經替換到程序中

int main()

{

int a = 10;<br>    return 0;

}

  宏定義做的替換是整體替換,和語法無關,它不遵循語法規則。

  宏定義一般兩種用法,一種是定義一種常量,另一種是定義一個宏函數。

#define N(n,m) n+m//宏定義

int main()

{

int c;

c = N(1,2);//對1和2相加 <br>      return 0;

}

  其實經過預處理之後變為

int main()

{

int c;

c = 1 + 2;<br>     return 0;

}

  另一種應用宏函數,因為宏定義不會考慮語法,它只是作整體代換,所以可以寫出不考慮變量類型的函數,這一點是他的優點

  舉例說明,如下代碼:

#define N(n,m) n+m//宏定義

int main()

{

int e = N(10,20) * N(10,20)//預處理之後是int e = 10 + 20 * 10 + 20;

//上面容易算錯誤!!

return 0;

}

  3>條件編譯:有些語句希望在條件滿足時才編譯。

#ifdef 標識符

  //程序段1

#else

  //程序段2

#endif

  當標識符已經定義時,程序段1才參加編譯

  在其使用時和define一樣也是做了一個替換工作。

對C語言有了一定認識。。。看Linux C語言視頻學的。

Copyright © Linux教程網 All Rights Reserved