目錄:
(1)分類
(2)特點
(3)巨集定義的基本操作
(4)巨集的高階用法:(帶引數的用法)
(5)條件編譯指令
一、分類:
(1)檔案包含指令:#include
(2) 巨集定義
(3)條件編譯指令
二、特點:
(1)都是以#開頭
(2)預處理指令都是在編譯之前執行
(3)預處理指令後面都沒有分號
三、巨集定義的基本操作
1、 預處理命令,在編譯之前執行
2、 作用:可以為一段**定義1個標識,如果要使用這個**,直接使用標識就可以
3 、 語法: #define 巨集名 值
#define 巨集名 值#define name @"張三"
4、 原理:在預編譯的時候,就會執行原始檔中的預處理命令
會將**中使用巨集名的地方替換為巨集值
5、需要注意的地方:
(1)巨集值可以是任意的東西,定義的時候並不會檢查語法;
(2)如果巨集值是乙個表示式,那麼巨集值並不是這個表示式的結果,而是這個表示式本身;
#define num (1+10+90)
(3)如果巨集值當中包含變數名,在使用之前必須保證這個變數已經存在
#define q a+a
(4)巨集的作用域:
可以定義在函式的內部,也可以定義在函式的外面
從定義巨集的地方,後面的所有的地方,都可以直接使用;
(5)#undef 巨集名
可以讓指定的巨集提前消失
(6)雙引號中的內容不會認為是巨集名;
(7)巨集的層層替換,可以使用
#define h 3#define w 3.14
#define s h*w
(8)巨集值後面可以新增分號,但是新增的分號作為巨集值一起給巨集名;
(9) 可以定義任意**段為巨集
#define和 typedef的區別:
1). #define是乙個預處理指令,在預編譯的時候執行,在預編譯的時候把巨集名替換成巨集值;
typedef是c語言**, 在**雲行的時候才會執行,
2)#define 可以將任意的**取1個識別符號
typedef只能為資料型別取名字
四、巨集的高階用法:(帶引數的用法)
1.使用有引數的巨集,就必須在使用的時候傳值
#define n(a) a+a+a//使用
n(1)
#define sum(a,b) a+b//使用
sum(1, 2)
注意: 使用:巨集不是函式,巨集的引數不需要加型別
如果換行,巨集就結束了
五、 條件編譯指令
1、 (1) 預處理指令,預編譯階段執行
(2)可以讓編譯器只編譯部分指令
2、使用:
條件編譯的條件只能是巨集,不能是函式變數
(1)、#ifndef
#endif#ifndef debug
//如果沒有定義debug這個巨集就執行下面的第d%行
#define nslog(...) nslog(@"%s 第%d行 \n %@\n\n",__func__,__line__,[nsstring stringwithformat:__va_args__])
#else
//否則的話就執行nslog
#define nslog(...)
#endif
(2)、#ifdef
#ifdef debug //如果定義debug這個巨集就執行下面的第d%行
#define nslog(...) nslog(@"%s 第%d行 \n %@\n\n",__func__,__line__,[nsstring stringwithformat:__va_args__])
#else
//否則的話就執行nslog
#define nslog(...)
#endif
(3)、#if else
#if debug==0#define baseurl @"測試"
#else
#define baseurl @"正式"
#endif
預處理編譯 巨集 define
預處理 main.c pre sccess created by qianfeng on 14 11 3.include define zoe0 0 define pi a 2.1415926 a undef pi 表示在undef以上的pi巨集都被登出,無效。undef pi 定義字串巨集函式 d...
C語言 預處理二(巨集定義 define)
define 巨集定義 巨集定義一般大寫 知識點一 define的作用域 從 define開始,從上往下,如果遇到 undef就到 undef處結束,如果沒有就是作用於當前整個檔案 include include 知識點二 巨集定義作用 巨集定義作用1 起到替換作用,可以定義常量 define x ...
預處理指令define
1 用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 define 語法的基本知識 例如 不能以分號結束,括號的使用,等等 懂得預處理器將為你計算常數表示式的值,因此,...