第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

關(guān)于C++宏定義避免多次包含的問(wèn)題

關(guān)于C++宏定義避免多次包含的問(wèn)題

呼啦一陣風(fēng) 2019-04-07 09:38:20
看到在好多cpp文件中,都有下面這樣的寫法#ifndefLIB_XXX_XXX#defineLIB_XXX_XXX...一大段代碼...#endif請(qǐng)問(wèn)這么宏定義的具體作用?
查看完整描述

2 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

《c++primer》一書2.9.2節(jié):在編寫頭文件之前,我們需要引入一些額外的預(yù)處理器設(shè)施。預(yù)處理器允許我們自定義變量。預(yù)處理器變量的名字在程序中必須是唯一的。任何與預(yù)處理器變量相匹配的名字的使用都關(guān)聯(lián)到該預(yù)處理器變量。為了避免名字沖突,預(yù)處理器變量經(jīng)常用全大寫字母表示。預(yù)處理器變量有兩種狀態(tài):已定義或未定義。定義預(yù)處理器變量和檢測(cè)其狀態(tài)所用的預(yù)處理器指示不同。#define指示接受一個(gè)名字并定義該名字為預(yù)處理器變量。#ifndef指示檢測(cè)指定的預(yù)處理器變量是否未定義。如果預(yù)處理器變量未定義,那么跟在其后的所有指示都被處理,直到出現(xiàn)#endif??梢允褂眠@些設(shè)施來(lái)預(yù)防多次包含同一頭文件:#ifndefSALESITEM_H
#defineSALESITEM_H
//DefinitionofSales_itemclassandrelatedfunctionsgoeshere
#endif條件指示#ifndefSALESITEM_H測(cè)試SALESITEM_H預(yù)處理器變量是否未定義。如果SALESITEM_H未定義,那么#ifndef測(cè)試成功,跟在#ifndef后面的所有行都被執(zhí)行,直到發(fā)現(xiàn)#endif。相反,如果SALESITEM_H已定義,那么#ifndef指示測(cè)試為假,該指示和#endif指示間的代碼都被忽略。為了保證頭文件在給定的源文件中只處理過(guò)一次,我們首先檢測(cè)#ifndef。第一次處理頭文件時(shí),測(cè)試會(huì)成功,因?yàn)镾ALESITEM_H還未定義。下一條語(yǔ)句定義了SALESITEM_H。那樣的話,如果我們編譯的文件恰好又一次包含了該頭文件。#ifndef指示會(huì)發(fā)現(xiàn)SALESITEM_H已經(jīng)定義,并且忽略該頭文件的剩余部分。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-07
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

首先,這些宏定義不是在cpp文件中,而是在頭文件中的。
我們知道,頭文件一般是用來(lái)聲明的,會(huì)被其他的源文件和頭文件include,當(dāng)被多個(gè)文件include的時(shí)候就會(huì)造成重復(fù)聲明。
為了使得只聲明一次,引入問(wèn)題中所說(shuō)的宏定義,一般以文件名大寫和_來(lái)當(dāng)宏的名字。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-07
  • 2 回答
  • 0 關(guān)注
  • 1042 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)