2、當(dāng)然,將會(huì)在標(biāo)準(zhǔn)輸出處顯示'10'.#define語法:
#definemacro-namereplacement-string#define命令用于把指定的字符串替換文件中的宏名稱.也就是說,#define使編譯器把文件中每一個(gè)macro-name替換為replacement-string.替換的字符串結(jié)束于行末.這里是一個(gè)經(jīng)典的#define應(yīng)用(至少是在C中):#defineTRUE1
#defineFALSE0
...
intdone=0;
while(done!=TRUE){
...
}#define命令的另外一個(gè)功能就是替換參數(shù),使它假冒創(chuàng)建函數(shù)一樣使用.如下的代碼
3、:#defineabsolute_value(x)(((x)<0)?-(x):(x))
...
intx=-1;
while(absolute_value(x)){
...
}當(dāng)使用復(fù)雜的宏時(shí),最好使用額外的圓括號(hào).注意在以上的例子中,變量"x"總是出現(xiàn)在它自己的括號(hào)中.這樣,它就可以在和0比較,或變成負(fù)值(乘以-1)前計(jì)算值.同樣的,整個(gè)宏也被括號(hào)圍繞,以防止和其它代碼混淆.如果你不注意的話,你可能會(huì)被編譯器曲解你的代碼.#error語法:
#errormessage#error命令可以簡(jiǎn)單的使編譯器在發(fā)生錯(cuò)誤時(shí)停止.當(dāng)遇到一個(gè)#error時(shí),編譯器會(huì)自動(dòng)輸出行號(hào)而無論mes
4、sage的內(nèi)容.本命令大多是用于調(diào)試.#if,#ifdef,#ifndef,#else,#elif,#endif這些命令讓編譯器進(jìn)行簡(jiǎn)單的邏輯控制.當(dāng)一個(gè)文件被編譯時(shí),你可以使用這些命令使某些行保留或者是去處.#ifexpression如果表達(dá)式(expression)的值是"真"(true),那么緊隨該命令的代碼將會(huì)被編譯.#ifdefmacro如果"macro"已經(jīng)在一個(gè)#define聲明中定義了,那么緊隨該命令的代碼將會(huì)被編譯.#ifndefmacro如果"macro"未在一個(gè)#define聲明中定義,那么緊隨命令的代碼將會(huì)被編譯.一些小邊注:命令#elif是"elsei
5、f"的一種縮寫,并且他可以想你所意愿的一樣工作.你也可以在一個(gè)#if后插入一個(gè)"defined"或者"!defined"以獲得更多的功能.這里是一部分例子:#ifdefDEBUG
cout<<"Thisisthetestversion,i="<
#include"filename"本命令包含一個(gè)文件并在當(dāng)前位置插入
6、.兩種語法的主要不同之處是在于,如果filename括在尖括號(hào)中,那么編譯器不知道如何搜索它.如果它括在引號(hào)中,那么編譯器可以簡(jiǎn)單的搜索到文件.兩種搜索的方式是由編譯器決定的,一般尖括號(hào)意味著在標(biāo)準(zhǔn)庫(kù)目錄中搜索,引號(hào)就表示在當(dāng)前目錄中搜索.Thespiffynew整潔的新C++#include目錄不需要直接映射到filenames,至少對(duì)于標(biāo)準(zhǔn)庫(kù)是這樣.這就是你有時(shí)能夠成功編譯以下命令的原因#include#line語法:
#lineline_number"filename"#line命令是用于更改__LINE__和__FILE__變量的值.文件名是可選的.
7、__LINE__和__FILE__變量描述被讀取的當(dāng)前文件和行.命令#line10"main.cpp"更改行號(hào)為10,當(dāng)前文件改為"main.cpp".#pragma#pragma命令可以讓編程者讓編譯器執(zhí)行某些事.因?yàn)?pragma命令的執(zhí)行很特殊,不同的編譯器使用有所不同.一個(gè)選項(xiàng)可以跟蹤程序的執(zhí)行.#undef#undef命令取消一個(gè)先前已定義的宏變量,譬如一個(gè)用#define定義的變量.預(yù)定義變量語法:
__LINE__
__FILE__
__DATE__
__TIME__
_cpl