它的作用是:當(dāng)指定的表達(dá)式值為真(非零)時(shí)就編譯程序段1,否則編譯程序段2?梢允孪冉o定一定條件,使程序在不同的條件下執(zhí)行不同的功能。
例如:輸入一行字母字符,根據(jù)需要設(shè)置條件編譯,使之能將字母全改為大寫輸出,或全改為小寫字母輸出。
#define LETTER 1
main()
{
char str[20]="C Language",c;
int i=0;
while((c=str[ i])!='\0'){
i++;
#if LETTER
if(c>='a'&&c<='z') c=c-32;
#else
if(c>='A'&&c<='Z') c=c+32;
#endif
printf("%c",c);
}
}
運(yùn)行結(jié)果為:C LANGUAGE
現(xiàn)在先定義LETTER為1,這樣在預(yù)處理?xiàng)l件編譯命令時(shí),由于LETTER為真(非零),則對(duì)第一個(gè)if語句進(jìn)行編譯,運(yùn)行時(shí)使小寫字母變大寫。如果將程序第一行改為:
#define LETTER 0
則在預(yù)處理時(shí),對(duì)第二個(gè)if語句進(jìn)行編譯處理,使大寫字母變成小寫字母(大寫字母與相應(yīng)的小寫字母的ASCII代碼差32)。此時(shí)運(yùn)行情況為:
c language
有人會(huì)問:不用條件編譯命令而直接用if語句也能達(dá)到要求,用條件編譯命令有什么好處呢?的確,此問題完全可以不用條件編譯處理,但那樣做目標(biāo)程序長(zhǎng)(因?yàn)樗姓Z句都編譯),而采用條件編譯,可以減少被編譯的語句,從而減少目標(biāo)的長(zhǎng)度。當(dāng)條件編譯段比較多時(shí),目標(biāo)程序長(zhǎng)度可以大大減少。