iOS 小知識 - #if , #ifdef , #ifndef.

Q : 在項目的 .h 文件中,

#ifndef XXX_h

#define XXX_h

//程序段1

#endif? /* XXX_h */

的作用?

A : 如果 XXX.h 不存在,就引入 XXX.h ,否則不用引入. 是為了防止該文件被重復引用.

#什么是重復引用:

其實“被重復引用”是指一個頭文件在同一個cpp文件中被include了多次,這種錯誤常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此時b.cpp文件導入了#include "a.h" 和#include "c.h"此時就會造成c.h重復引用。

#頭文件被重復引用引起的后果:

有些頭文件重復引用只是增加了編譯工作的工作量,不會引起太大的問題,僅僅是編譯效率低一些,但是對于大工程而言編譯效率低下那將是一件多么痛苦的事情。

有些頭文件重復包含,會引起錯誤,比如在頭文件中定義了全局變量(雖然這種方式不被推薦,但確實是C規(guī)范允許的)這種會引起重復定義。

Q : #if , #ifdef , #ifndef 的使用方法?

A : #1,#2,#3.

#1

#if condition(表達式1)

//程序段1

(#elif condition(表達式n)

//程序段n

)

...

(#else

//程序段3

)

#endif

說明 : 如果 表達式1(condition : true),則執(zhí)行 程序段1,(否則如果 表達式2(condition : true),則執(zhí)行 程序段n),(否則執(zhí)行 程序段3).

#2

#ifdef macro(標識符1)

//程序段1

(#else

//程序段2

)

#endif

說明 : 如果 有定義標識符1(#define macro),則執(zhí)行 程序段1,(否則執(zhí)行 程序段2).

#3

#ifndef macro(標識符1)

//程序段1

(#else

//程序段2

)

#endif

說明 : 如果 沒有定義標識符1(#define macro),則執(zhí)行 程序段1,(否則執(zhí)行 程序段2).與#2相反!

————————————————

版權聲明:本文為CSDN博主「RsyBlog1992」的原創(chuàng)文章,遵循CC 4.0 by-sa版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/rsyblog1992/article/details/51674614

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,205評論 0 3
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,044評論 0 2
  • 預處理就是在進行編譯的第一遍詞法掃描和語法分析之前所作的工作。說白了,就是對源文件進行編譯前,先對預處理部分進行處...
    雖已嗯閱讀 2,623評論 0 0
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,715評論 0 5
  • 2018年4月28日,一個對我而言極其平常的日子,可是在這樣的一個日子里我卻收獲了意想不到的感動。38名同學...
    默念念閱讀 441評論 0 3

友情鏈接更多精彩內(nèi)容