宏定義與條件編譯的用處


   #define     定義宏

    #undef      取消已定義的宏

    宏定義常量與命令可以避免幻數 在宏定義命名時候應該儘量清楚表明其用途。

函數型宏定義的有點:儘管其和真正的函數相比有很多缺點,但只要小心使用還是會顯著提高代碼的執行效率,畢竟省去了分配和釋放棧幀,傳參,傳返回值等一系列工作

                                         因此那些簡短並且被頻繁調用的函數經常用函數型宏定義來代替實現。



     #if         如果給定條件爲真,則編譯下面代碼

    #ifdef      如果宏已經定義,則編譯下面代碼
    #ifndef     如果宏沒有定義,則編譯下面代碼
    #elif       如果前面的#if給定條件不爲真,當前條件爲真,則編譯下面代碼,其實就是else if的簡寫
    #endif      結束一個#if……#else條件編譯塊


#ifdef 和 #ifndef這二者主要用於防止重複包含。我們一般在.h頭文件前面加上這麼一段:

 
//頭文件防止重複包含
//funcA.h
#ifndef FUNCA_H
#define FUNCA_H
//頭文件內容
#end if
這樣,如果a.h包含了funcA.h,b.h包含了a.h、funcA.h,重複包含,會出現一些type redefination之類的錯誤。
#if defined等價於#ifdef; #if !defined等價於#ifndef

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章