免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
C/C++指令 #undef ,#ifdef, #ifndef,#if的用法
#undef
  #undef 是在后面取消以前定義的宏定義
  該指令的形式為
  #undef 標(biāo)識(shí)符
  其中,標(biāo)識(shí)符是一個(gè)宏名稱。如果標(biāo)識(shí)符當(dāng)前沒(méi)有被定義成一個(gè)宏名稱,那么就會(huì)忽略該指令。
  一旦定義預(yù)處理器標(biāo)識(shí)符,它將保持已定義狀態(tài)且在作用域內(nèi),直到程序結(jié)束或者使用#undef 指令取消定義。
  在此程序中,我們將取消在先前程序中對(duì)預(yù)處理器的定義。  
      源代碼:
      #define TRACE(x)
      #if DBG
          #undef TRACE
          #define TRACE(x) g_TraceCallback x    
      #else 
          #ifndef TRACE
          #define TRACE(x)
          #endif
      #endif 
      解析:
      #define TRACE(x)
      #if DBG //成立的話跑這支
          #undef TRACE  //釋放之前定義的 #define TRACE ,防止重復(fù)定義
          #define TRACE(x) g_TraceCallback x  
      #else  // DBG 不成立 跑這支
          #ifndef TRACE //當(dāng)TRACE 沒(méi)有被定義
          #define TRACE(x) //宏定義
          #endif
      #endif// DBG
#ifdef,#ifndef使用 
    條件編譯命令最常見(jiàn)的形式為:
    #ifdef 標(biāo)識(shí)符
    程序段1
    #else
    程序段2
    #endif
    
    它的作用是:當(dāng)標(biāo)識(shí)符已經(jīng)被定義過(guò)(一般是用#define命令定義),則對(duì)程序段1進(jìn)行編譯,否則編譯程序段2。
    其中#else部分也可以沒(méi)有,即:
    #ifdef
    程序段1
    #denif
    
    這里的“程序段”可以是語(yǔ)句組,也可以是命令行。這種條件編譯可以提高C源程序的通用性。如果一個(gè)C源程序在不同計(jì)算機(jī)系統(tǒng)上系統(tǒng)上運(yùn)行,而不同的計(jì)算機(jī)又有一定的差異。例如,當(dāng)程式跑到else,如果TRACE沒(méi)被定義,則下一句再定義
    源代碼:
      #define TRACE(x)
      #if DBG
          #undef TRACE
          #define TRACE(x) g_TraceCallback x    
      #else 
          #ifndef TRACE
          #define TRACE(x)
          #endif
      #endif 
   解析:
      #define TRACE(x)
      #if DBG
           #undef TRACE
           #define TRACE(x) g_TraceCallback x    
      #else 
           #ifndef TRACE //如果之前沒(méi)定義,則跑下邊定義------該例前邊有#define TRACE(x) ,則后邊的定義自動(dòng)失效因此不會(huì)因?yàn)橹貜?fù)定義而出錯(cuò)
           #define TRACE(x) //定義
           #endif
       #endif 
    
我們有時(shí)也采用下面的形式:
    #ifndef 標(biāo)識(shí)符
    程序段1
    #else
    程序段2
    #endif
    
    只是第一行與第一種形式不同:將“ifdef”改為“ifndef”。它的作用是:若標(biāo)識(shí)符未被定義則編譯程序段1,否則編譯程序段2。這種形式與第一種形式的作用相反。
    以上兩種形式用法差不多,根據(jù)需要任選一種,視方便而定。
    還有一種形式,就是#if后面的是一個(gè)表達(dá)式,而不是一個(gè)簡(jiǎn)單的標(biāo)識(shí)符:
    #if 表達(dá)式
    程序段1
    #else
    程序段2
    #endif
   
當(dāng)表達(dá)式成立,則跑程序段1,否則跑程序段2
注意:
          除#undef釋放之前的宏定義可單獨(dú)使用之外,
#ifdef,#if,#ifndef均要與#endif配對(duì)
如:
          #if...#else...#endif
          #ifdef...#endif
          #ifndef...#endif

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/michael_liuyong/archive/2009/06/05/4241128.aspx
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解C語(yǔ)言中的#define、#undef、#indef、#ifndef#if,#elif等
5.5 預(yù)處理指令 (Preprocessor Directives)
#ifdef 標(biāo)識(shí)符 ,條件編譯,宏定義
C語(yǔ)言特定字的解釋
頭文件為什么要加#ifndef #define #endif
C語(yǔ)言宏
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服