C語言基本語法——預處理器和預處理指令


  1、什么是預處理器

  2、什么是預處理器指令

  3、預處理器指令

  4、宏指令

  5、宏函數

  6、宏函數的優缺點

  7、條件編譯指令

 

1、什么是預處理器

  • 預處理器是一個程序,用來處理源程序中的預處理指令。

  • 一個程序在編譯之前一般都要經過預處理。

 

2、什么是預處理器指令

  • 以“#”開頭的指令叫預處理指令

  • 可以出現在任何位置,必須一行結束

  • 如果要換行,須得用"\"來連接兩行內容

 

3、預處理器指令

  • 文件包含

#include <>#include “”

  • 宏定義

無參宏定義

有參宏定義

  • 條件編譯

#if

#ifdef 

#ifndef 

#endif

#elif

#else

#undef

#if defined

 

4、宏指令

  宏相當於文本的替換操作

  • 語法格式:

-定義在函數的外面
-格式:#define PI 3.14

  PI為宏的文本內容 在編譯前將PI的內容替換成3.14

 

5、宏函數

  • 語法格式: #define MianJi(r) PI*r*r

  宏函數只是文本,只是相當於做了內容替換的操作,注意參數是沒有數據類型

 

6、宏函數的優缺點

  • 宏函數的優缺點

可以代碼更簡單、更容易,避免大量使用。

  • 宏函數注意事項

– 宏函數中的參數一定要用括號括起來,以防止替換后的優先級問題。

– 宏函數的整個表達式也需要用括號括起來,以防止宏函數參於表 達式的運算

– 宏函數中的多條語句時,應寫成復合語句,以防止重復定義變量。

– 調用宏函數時,不要將++,--的表達式做為參數傳遞,可以先++,--后調用,或者,調用后++,--,以防止在宏函數中重復地 計算++,--

– 宏函數也可以調用另一個宏函數

 

7、條件編譯指令

  • 在代碼中設置編譯條件 根據編譯條件進行代碼的編譯並運 行。(跨平台)

  • 在編譯文件的時候傳入一個參數,根據參數就可以對代碼進 行有選擇的編譯。

gcc -DZHAOBENSHAN main3.c

  • 條件指令

#if 如果 #ifdef 如果定義
#ifndef 如果沒定義 #elif 如果 //else if

#else 否則 與 #if 對應關系
#endif 結束標識
#undef 取消宏和#define 定義宏

  • 編譯方式

  根據參數編譯

gcc -DXXX main.c

  根據宏值(參數)

#define ZHAOBENSHAN 1

  根據宏"值(邏輯)"進行編譯

#if ZHAOBENSHAN==1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM