預處理命令

1.文件包含:
#include
系統文件用:“<>”
創建的文件用:“""”

2.宏定義:
#define

3.條件編譯:
#if, #elif, #else, #endif、#ifdef, #ifndef

分三種情況:

1、情況1:

   #ifdef _XXXX

   ...程序段1...

   #else

   ...程序段2...

   #endif

    這表明如果標識符 _XXXX已被 #define 命令定義過,則對程序段1進行編譯;否則對程序段2進行編譯。

   例: 

   #define NUM
   .............
   .............
   .............
   #ifdef NUM

    printf("之前NUM有過定義啦!:) \n");

   #else

    printf("之前NUM沒有過定義!:( \n");

   #endif

   }

   
 2、情況2: 

   #ifndef _XXXX 

   ...程序段1... 

   #else 

   ...程序段2... 

   #endif

    這裡使用了 #ifndef,表示的是 if not def。當然是和 #ifdef 相反的狀況(如果沒有定義標識符 _XXXX,那麼執行程序段1,否則執行程序段2)。

3、情況3:

   #if 常量
 
   ...程序段1...

   #else

   ...程序段2...

   #endif 

    這裡表示,如果常量為真(非零),執行程序段1,否則執行程序段2。

可以將測試代碼段加進來。當需要開啟測試的時候,只要將常量變1就好了。而不要測試的時候,只要將常量變0。

4、情況4:

     #if 條件 1
  
    代碼段 1
     
     #elif  條件 2

        代碼段 2

      ...

     #elif 條件 n
   
    代碼段 n
     
     #else

        代碼段 n+1

     #endif
    
運用:

假設我們已在程序首部定義 #ifdef DEBUG与 #ifdef TEST:
 
  1.利用 #ifdef/3endif將某程序功能模塊包括進去,以向某用戶提供該功能。
 
  在程序首部定義 #ifdef HNLD:
 
  #ifdef HNLD
 
  #include"n166_hn.c"
 
  #endif
 
  如果不愿向別的用戶提供該功能,則在編譯之前將首部的HNLD加一下划線即可。
 
  2.在每一個子程序前加上標記,以便追蹤程序的運行。
 
  #ifdef DEBUG
 
  printf(" Now is in hunan !");
 
  #endif
 
  3.避開硬件的限制。有時一些具体應用環境的硬件不一樣,但限于條件,本地缺乏這种設備,于是繞過硬件,直接寫出預期效果。具体做法是:
 
  #ifndef TEST
 
  i=dial(); 
 
  //程序調試運行時繞過此語句
 
  #else 
 
  i=0;
 
  #endif
 
  調試通過後,再屏蔽TEST的定義并重新編譯,即可發給用戶使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值