#define

簡(jiǎn)單的#define定義

#define MAXTIME 1000
一個(gè)簡(jiǎn)單的MAXTIME就定義好了硬耍,它代表1000,如果在程序里面寫 if(i<MAXTIME){.........}編譯器在處理這個(gè)代碼之前會(huì)對(duì)MAXTIME進(jìn)行處理替換為1000.這樣的定義看起來類似于普通的常量定義CONST容贝,但也有著不同佳励,因?yàn)閐efine的定義更像是簡(jiǎn)單的文本替換,而不是作為一個(gè)量來使用座每。


#define的函數(shù)定義

define可以像函數(shù)那樣接受一些參數(shù)狮惜,如下
#define max(x,y) (x)>(y)?(x):(y);
但是存在隱患
比如:

#define pin (int*);
pin a,b;

本意是a和b都是int型指針高诺,但是實(shí)際上變成int* a,b; a是int型指針,而b是int型變量碾篡。 這是應(yīng)該使用typedef來代替define虱而,這樣a和b就都是int型指針了。 所以我們?cè)诙x的時(shí)候开泽,養(yǎng)成一個(gè)良好的習(xí)慣牡拇,建議所有的層次都要加括號(hào)。


#define的多行定義

define可以替代多行的代碼穆律,例如MFC中的宏定義

#define MACRO(arg1, arg2) 
do { \ 
/* declarations */ \ 
stmt1; \ 
stmt2; \
 /* ... */ \ 
 } while(0) /* (no trailing ; ) */ 

關(guān)鍵是要在每一個(gè)換行的時(shí)候加上一個(gè)"\" 惠呼。


#define的條件編譯

在大規(guī)模的開發(fā)過程中,特別是跨平臺(tái)和系統(tǒng)的軟件里众旗,define最重要的功能是條件編譯
就是:
#ifdef XXX…(#else) … #endif

#ifdef DV22_AUX_INPUT 
#define AUX_MODE 3  
#else  
#define AUY_MODE 3 
#endif

可以在編譯的時(shí)候通過#define設(shè)置編譯環(huán)境

如何定義宏罢杉,取消宏

//定義宏  
#define [MacroName] [MacroValue] 
//取消宏  
#undef [MacroName] 
//普通宏 
#define PI (3.1415926) 
//帶參數(shù)的宏
#define max(a,b) ((a)>(b)? (a),(b))//這個(gè)要慎用

頭文件(.h)可以被頭文件或C文件包含

重復(fù)包含(重復(fù)定義) 由于頭文件包含可以嵌套趟畏,那么C文件就有可能包含多次同一個(gè)頭文件贡歧,就可能出現(xiàn)重復(fù)定義的問題的。 通過條件編譯開關(guān)來避免重復(fù)包含(重復(fù)定義) 例如

#ifndef __headerfileXXX__ 
#define __headerfileXXX__ 
…  
//文件內(nèi)容 
… 
#endif
//#ifdef的使用和#if defined()的用法一致 
//#ifndef又和#if !defined()的用法一致赋秀。

重新定義一些類型利朵,防止由于各種平臺(tái)和編譯器的不同,而產(chǎn)生的類型字節(jié)數(shù)差異猎莲,方便移植绍弟。

typedef  unsigned char      boolean;     /* Boolean value type. */ 
typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */ 
typedef  unsigned short     uint16;      /* Unsigned 16 bit value */ 
typedef  unsigned char      uint8;       /* Unsigned 8  bit value */ 
typedef  signed long int    int32;       /* Signed 32 bit value */ 
typedef  signed short       int16;       /* Signed 16 bit value */ 
typedef  signed char        int8;        /* Signed 8  bit value */

參考百度文庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市著洼,隨后出現(xiàn)的幾起案子樟遣,更是在濱河造成了極大的恐慌而叼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豹悬,死亡現(xiàn)場(chǎng)離奇詭異葵陵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瞻佛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門脱篙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伤柄,你說我怎么就攤上這事绊困。” “怎么了适刀?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵秤朗,是天一觀的道長。 經(jīng)常有香客問我笔喉,道長川梅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任然遏,我火速辦了婚禮贫途,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘待侵。我一直安慰自己丢早,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布秧倾。 她就那樣靜靜地躺著怨酝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪那先。 梳的紋絲不亂的頭發(fā)上农猬,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音售淡,去河邊找鬼斤葱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛揖闸,可吹牛的內(nèi)容都是我干的揍堕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼汤纸,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼衩茸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贮泞,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤楞慈,失蹤者是張志新(化名)和其女友劉穎幔烛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囊蓝,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡说贝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慎颗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乡恕。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖俯萎,靈堂內(nèi)的尸體忽然破棺而出傲宜,到底是詐尸還是另有隱情,我是刑警寧澤夫啊,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布函卒,位于F島的核電站,受9級(jí)特大地震影響撇眯,放射性物質(zhì)發(fā)生泄漏报嵌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一熊榛、第九天 我趴在偏房一處隱蔽的房頂上張望锚国。 院中可真熱鬧,春花似錦玄坦、人聲如沸血筑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豺总。三九已至,卻和暖如春择懂,著一層夾襖步出監(jiān)牢的瞬間喻喳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工困曙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留表伦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓赂弓,卻偏偏與公主長得像绑榴,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盈魁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容