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

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

C ++宏什么時(shí)候有用?

C ++宏什么時(shí)候有用?

C++
ibeautiful 2019-08-15 14:55:34
C ++宏什么時(shí)候有用?該?預(yù)處理器有理由擔(dān)心和C ++社區(qū)避之唯恐不及。內(nèi)聯(lián)功能,功能和模板通常是更安全和更好的替代品#define。以下宏:#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)絕不是優(yōu)于安全類型:inline bool succeeded(int hr) { return hr >= 0; }但宏確實(shí)有它們的位置,請(qǐng)列出您為宏找到的用途,如果沒有預(yù)處理器,您就無法做到。請(qǐng)將每個(gè)用例放在一個(gè)單獨(dú)的答案中,以便可以進(jìn)行投票,如果您知道如何在沒有預(yù)備教授的情況下實(shí)現(xiàn)其中一個(gè)答案,請(qǐng)指出該答案的評(píng)論。
查看完整描述

3 回答

?
烙印99

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

作為包裝的調(diào)試功能,以自動(dòng)傳遞之類的東西__FILE__,__LINE__等:


#ifdef ( DEBUG )

#define M_DebugLog( msg )  std::cout << __FILE__ << ":" << __LINE__ << ": " << msg

#else

#define M_DebugLog( msg )

#endif


查看完整回答
反對(duì) 回復(fù) 2019-08-15
?
慕工程0101907

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

方法必須始終是完整的,可編譯的代碼; 宏可能是代碼片段。因此,您可以定義一個(gè)foreach宏:

#define foreach(list, index) for(index = 0; index < list.size(); index++)

并因此使用它:

foreach(cookies, i)
    printf("Cookie: %s", cookies[i]);

從C ++ 11開始,它被基于范圍的for循環(huán)所取代。


查看完整回答
反對(duì) 回復(fù) 2019-08-15
?
繁花不似錦

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

頭文件保護(hù)需要宏。

還有其他需要宏的領(lǐng)域嗎?不多(如果有的話)。

是否有其他情況可以從宏中受益?是?。?!

我使用宏的一個(gè)地方是非常重復(fù)的代碼。例如,當(dāng)包裝C ++代碼以與其他接口(.NET,COM,Python等)一起使用時(shí),我需要捕獲不同類型的異常。我是這樣做的:

#define HANDLE_EXCEPTIONS \catch (::mylib::exception& e) { \    throw gcnew MyDotNetLib::Exception(e); \} \catch (::std::exception& e) { \    throw gcnew MyDotNetLib::Exception(e, __LINE__, __FILE__); \} \catch (...) { \    throw gcnew MyDotNetLib::UnknownException(__LINE__, __FILE__); \}

我必須將這些捕獲物放在每個(gè)包裝函數(shù)中。我不是每次都輸入完整的catch塊,而是輸入:

void Foo(){
    try {
        ::mylib::Foo()
    }
    HANDLE_EXCEPTIONS}

這也使維護(hù)更容易。如果我必須添加一個(gè)新的異常類型,我只需要添加一個(gè)地方。

還有其他有用的示例:其中許多包括__FILE____LINE__預(yù)處理器宏。

無論如何,正確使用時(shí),宏非常有用。宏不是邪惡的 - 他們的濫用是邪惡的。


查看完整回答
反對(duì) 回復(fù) 2019-08-15
  • 3 回答
  • 0 關(guān)注
  • 542 瀏覽

添加回答

舉報(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)