iOS 宏定義

參考博客:https://mp.weixin.qq.com/s/qTFLZFL2IAz1ScrV1u313Q

宏分為兩種:Object-like 宏和Function-like 宏

Object-like 宏:

1、在宏定義時,通常宏的名稱都是用大寫字母表示,如果要換行就在行末使用\斷行。

2、在調(diào)用宏時,預處理器在替換宏的內(nèi)容時會繼續(xù)檢查宏的內(nèi)容本身是否也是宏定義,如果是,會繼續(xù)替換宏定義的內(nèi)容,直到全部展開。

3、宏定義以最后有效的定義為準。

例如:

#define M_PI 3.14159265358979323846264338327950288

#define MAX(a,b) ((a)>(b)?(a):(b))

#undef 宏名稱:可以取消宏定義。

Function-like 宏:

1.在“()”里可以添加參數(shù),以“,”分隔

2.使用 “#” 預處理操作符來實現(xiàn)將宏中的參數(shù)轉化為字符(串),這個操作會將參數(shù)中的所有字符都實現(xiàn)字符(串)化,包括引號,如果參數(shù)中間有很多空格,字符(串)化之后將會只用一個空格代替。

3.使用 “##” 操作符可以實現(xiàn)宏中token的連接

可變參數(shù)的宏:__VA_ARGS__

__VA_ARGS__:總體來說就是將左邊宏中 ... 的內(nèi)容原樣抄寫在右邊 __VA_ARGS__ 所在的位置。它是一個可變參數(shù)的宏,是新的C99規(guī)范中新增的。

例如:

#define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); }

可以用來把block調(diào)用的參數(shù)傳遞過去;

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 初學ios不久時間,對ios的宏定義充滿好奇,宏的各種高級用法讓ios代碼變得優(yōu)雅,那么宏究竟是什么,讓我來花時間...
    林帥并不帥閱讀 2,048評論 4 1
  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe閱讀 1,371評論 0 10
  • 1. 宏定義簡介 宏定義是使用#define將某段代碼、字符串等一串的文字,用一個宏來代替的一種預處理方式。 2....
    Job_Yang閱讀 3,115評論 0 3
  • 1 weakself和strongself #ifndef weakify #if DEBUG #ifhas_fe...
    涐罙擁那嗰懂涐閱讀 749評論 1 1
  • 讀了6個故事,有一句話特別觸動我,真正的幫助別人,應該是傳遞智慧,給別人一個升華心靈,證得智慧的助緣。 真的,這句...
    心我聽你說閱讀 429評論 0 0

友情鏈接更多精彩內(nèi)容