首頁>Club>
9
回覆列表
  • 1 # 一鏡yi相

    說到宏定義,我們應該先了解什麼是預處理指令,相信大家並不會陌生,之前我們程式設計時,程式的開頭#include指令,#define指令都是預處理指令,它能使我們的編譯更加的高效,便捷,因此C語言中是允許使用者自己加入一些特定的預處理指令的。

    一,不帶引數的宏定義

    不帶引數的宏定義是比較簡單的,就是用一個指定的識別符號來代表一個字串。它的一般形式為;

    #define 識別符號 字串

    它的作用是在本程式檔案中用指定的識別符號E來代替2.718281828459這個字串。在進行預處理時,將程式中凡是在該指令以後出現的所有的E都用2.718281828459代替。這種方法使使用者能以一個簡單的名字代替一個長的字串,因此把這個識別符號(名字)稱為"宏名”

    在預處理時將宏名替換成字串的過程稱為"宏展開“。#define就是宏定義指令。

    二,帶引數的宏定義

    帶引數的宏定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;

    #define 識別符號(宏名)(引數表) 字串

    字串中包含在括號中所指定的引數。

    擴充套件資料:

    宏定義只佔編譯時間,函式呼叫則佔用執行時間(分配單元,儲存現場,值傳遞,返回),每次執行都要載入,所以執行相對宏定義會較慢。

    使用宏定義次數多時,宏定義展開後源程式很長,因為每展開一次都使程式增長,但是執行起來比較快一點(這也不是絕對的,當有很多宏定義展開,目標檔案很大,執行的時候執行時系統換頁頻繁,效率就會低下)。而函式呼叫不使源程式變長。

  • 中秋節和大豐收的關聯?
  • 汽車前輪定位是做什麼的?