define和預處理指令

2022-08-29 10:12:11 字數 2075 閱讀 2224

#define和預處理指令--(妖妖隨筆)

預處理過程是先於編譯器對源**進行處理(進行初步的轉換),產生新的源**提供給編譯器。

格式:預處理指令是以#開頭的**行,#後是指令關鍵字,在關鍵字和#號之間允許存在任意個數的空白字元。

#空指令             沒有任何效果

#include           引入乙個源**檔案

#define             定義巨集

#undef              取消定義巨集

#if                    如果條件為真,則編譯下面的**

#elif                 如果前面的#if不為真,則編譯下面的**

#endif              結束乙個#if...#elif條件編譯塊

#ifdef               如果已經定義了某個巨集,則編譯下面的**

#ifndef             如果沒有定義某個巨集,則編譯下面的**

#error              停止編譯並顯示錯誤資訊

1.防止重複引用的**:

#ifndef a_h    意思是"if not define a.h"  如果不存在a.h

#define a_h   就引入a.h

#endif           否則不需要引入

#ifndef _objc_runtime_h  //如果不存在_objc_runtime_h

#define _objc_runtime_h  //就引入_objc_runtime_h(定義巨集)

#include //引入檔案

#include

#include

#include

#include

#include

#if target_os_mac        //如果條件為真,就編譯下面的**

#include

#endif                   //結束條件編譯塊

2.根據條件建立乙個button:

uibutton *btn = [uibutton buttonwithtype:uibuttontypecustom];

btn.frame = cgrectmake(0, 0, 100, 100);

[btn addtarget:self action:@selector(btnclicked) forcontrolevents:uicontroleventtouchupinside];

[self.view addsubview:btn];

但是根據新的需求,這個button暫時不需要顯示在介面上面,這時候可以使用預處理指令來進行條件判斷

(1)第一種方法,定義乙個具體的巨集

#define _showbtn_ 0

uibutton *btn = [uibutton buttonwithtype:uibuttontypecustom];

btn.frame = cgrectmake(0, 0, 100, 100);

[btn addtarget:self action:@selector(btnclicked) forcontrolevents:uicontroleventtouchupinside];

[self.view addsubview:btn];

#if _showbtn_

[self.view addsubview:btn];  //如果需要顯示按鈕,將其新增到父檢視中

#else

//不將其新增到父檢視中 

#endif

使用:這時候如果想顯示該button物件,那麼將#define _showbtn_ 1,否則寫為#define _showbtn_ 0

(2)第二種方法(定義乙個沒有數值的巨集)

#ifdef _showbtn_

[self.view addsubview:btn];

#endif

這段**的意思就是如果定義了巨集_showbtn_,那麼就將btn新增到父檢視,如果沒有定義的話,那麼不新增到父檢視。

使用:這時候如果我們想要將其新增到父檢視,則在檔案的頂部寫上#define _showbtn_

預處理指令define

1 用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 懂得預處理器將為你計算常數表示式的值,因此,...

預處理指令 define

電腦科學裡的巨集 macro 是一種批量處理的稱謂。一般說來,巨集是一種規則或模式,或稱語法替換,用於說明某一特定輸入 通常是字串 如何根據預定義的規則轉換成對應的輸出 通常也是字串 這種替換在預編譯時進行,稱作巨集展開。include define max 100 上述兩個稱為預處理指令,因為它們...

預處理指令 define

enum給整數命名,typedef給型別命名,巨集給一切重新命名 本質 單純的替換 define x y define one 1 one替換成1 define two 1 2 5 巨集不進行任何計算,直接把1 2 5替換 define printf printf d d n one,two pri...