IOS開發學習筆記008

來源:互聯網
上載者:User

標籤:

預先處理

 1、宏定義

 2、條件編譯

 3、檔案包含

注意:

  1、所有預先處理都是以#開頭,並且結尾不用分號.

  2、宏名一般用大寫字母,以便與變數名區別開來,但用小寫也沒有語法錯誤

  3、範圍也是從定義到代碼塊結束

  4、定義一個宏時可以引用已經定義的宏名

  5、在編譯預先處理用字串替換宏名時,不作語法檢查,只是簡單的字串替換。只有在編譯的時候才對已經展開宏名的來源程式進行語法檢查

一、宏定義

  1、不帶參數的宏定義

  #define 宏名 字串

  #define COUNT 6  

  2、帶參數的宏定義

  #define 宏名(參數列表) 字串

  #define sum(va,vb) ((va)+(vb))

  注意:每個參數都要加括弧,運算結果也要加括弧

若需要提前取消宏定義可用 #undef COUNT實現。

  程式碼範例

 1 //宏名一般用大寫字母,以便與變數名區別開來,但用小寫也沒有語法錯誤 2 //1、宏定義1,不帶參數的宏定義,常用來定義常量 3 #define COUNT 6//後面麼有‘;‘ 4  5 #include <stdio.h> 6 //1、宏定義2,帶參數的宏定義,每個參數都要加括弧,運算結果也要加括弧 7 #define sum(v1,v2) ((v1)+(v2)) 8  9 10 int main()11 {12     //1、宏定義使用13     int array[COUNT] = {1,2,3,4,5,6};14     for (int i = 0; i < COUNT; i++)15     {16         printf("%d ",array[i]);17     }18 #undef COUNT    //提前取消宏定義19     //帶參數的宏20     printf("\n%d\n",sum(10,20));21     printf("%d\n",sum(3,3)*sum(4,4));//這樣實際運行效果是3+3*4+4=19,因為宏只是簡單的文本替換,所以定義時加()比較好22 23     //2、條件編譯24     25     26     return 0;27 }

 

二、條件編譯

滿足條件就對代碼進行編譯,否則不編譯。

#if 條件1

 .....

#elif 條件

  ......

#else

  .....

#endif//不可缺少

 

1 #define COUNT 6//後面麼有‘;‘2   //2、條件編譯,一般判斷宏的值,不能對變數進行操作3 #if(COUNT  == 6)4     printf("條件編譯:%d\n",COUNT);5 #elif (COUNT  == 4)6     7 #else8     9 #endif//不可缺少
#if defined()和#if !defined()的使用
#if defined(COUNT)//COUNT是一個宏,如果定義這個宏就執行下面的代碼
...code...
#endif
#if !defined(COUNT)//COUNT是一個宏,如果沒有定義這個宏就執行下面的代碼
...code...
#endif
代碼:
1 //#if defined()和#if !defined()的用法2 #if defined (COUNT)//如果定義宏就編譯下面代碼,否則不編譯3     printf("defined:%d\n",COUNT);4 #endif5     6 #if !defined (COUNT1)//如果定義宏就編譯下面代碼,否則不編譯7     printf("! defined\n");8 #endif

 

 
#ifdef和#ifndef的使用
#ifdef COUNT//COUNT是一個宏,如果定義這個宏就編譯下面的代碼  ...code...#endif

#ifndef COUNT//COUNT是一個宏,如果沒有定義這個宏就編譯下面的代碼  ...code...#endif
代碼:
1 //#ifdef和#ifndef的使用2 #ifdef COUNT//如果定義宏就編譯下面代碼,否則不編譯3      printf("ifdef:%d\n",COUNT);4 #endif5  6 #ifndef COUNT1//如果定義宏就編譯下面代碼,否則不編譯7     printf("ifndef\n");8 #endif

 

三、檔案包含

#include

#include <>//系統標頭檔

#include ""//自訂的標頭檔

檔案包含可能會重複包含同一個檔案,這是可以再要包含的檔案中添加一個宏定義,用於消除重複包含。

格式如下  

  #ifndef A_H

  #def A_H

    ..........

  #endif

這樣即使多次#include同一個標頭檔也不會產生檔案的重複性包含

 

 

2015-4-14 今日如此,明日依舊。

IOS開發學習筆記008

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.