#ifdef的用法【轉】


 

#ifdef的用法

 
 

 

#ifdef的用法
靈活使用#ifdef指示符,我們可以區隔一些與特定頭文件、程序庫和其他文件版本有關的代碼。
代碼舉例:新建define.cpp文件

#include "iostream.h"
int main()
{
#ifdef DEBUG 
cout<< "Beginning execution of main()";
#endif 
return 0;
}
運行結果為:Press any key to continue 

改寫代碼如下:
#include "iostream.h"
#define DEBUG 
int main()
{
#ifdef DEBUG 
cout<< "Beginning execution of main()";
#endif 
return 0;

運行結果為:Beginning execution of main()
Press any key to continue

更一般的情況是,#define語句是包含在一個特定的頭文件中。
比如,新建頭文件head.h,在文件中加入代碼:

#ifndef DEBUG
#define DEBUG
#endif

而在define.cpp源文件中,代碼修改如下:
#include "iostream.h"
#include "head.h" 
int main(){
#ifdef DEBUG 
cout<< "Beginning execution of main()";
#endif 
return 0;

運行結果如下:Beginning execution of main()
Press any key to continue 
結論:通過使用#ifdef指示符,我們可以區隔一些與特定頭文件、程序庫和其他文件版本有關的代碼。
================================================================================

為各個版本的軟件升級工作是很困難的,因為這些補丁程序都是在一套軟件的基礎上不斷地修改與擴充而編寫的,並由不同的標志文件轉入到不同的模塊,雖然程序 體積在不斷擴大,但絲毫不影響老用戶的功能,這主要是得益於C程序的#ifdef/#else/#endif的作用。

我們主要使用以下幾種方法,假設我們已在程序首部定義#ifdef DEBUG與#ifdef TEST:

  1.利用#ifdef/#endif將某程序功能模塊包括進去,以向某用戶提供該功能。

  在程序首部定義#ifdef HNLD:

    #define 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的定義並重新編譯,即可發給用戶使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM