亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++中 預定義宏是否應該由inline函數取代

C++中 預定義宏是否應該由inline函數取代

暮色呼如 2018-07-07 14:21:58
在<Effective C++>中,有一個條款是這樣的:現代的C++程序設計原則不推薦適用宏定義常量或函數宏,應該盡量少的使用 #define ,如果可能,用 const 變量或 inline 函數代替。但在Debug程序的時候需要一些預定義宏,如__DATE__,__FILE__,__LINE__,__FUNCTION__等。請問面對這種情況,是否應該用inline來代替define呢。如果需要 下面這種情況應該如何替代呢。#define log_err(M, ...) fprintf(stderr, "[ERROR] (%s:%d: errno: %s) " M "\n", __FILE__, __LINE__,  clean_errno(), ##__VA_ARGS__)
查看完整描述

2 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

我認為使用define的最大價值在于是否可以將大段的重復性代碼濃縮為define,后續使用可能用一個宏就解決大段的重復性代碼。比如mfc中的消息映射,成功的將很多重復性的代碼濃縮為一兩個宏,雖然mfc本身很復雜,但是它的宏定義的使用堪稱教科書。其他常用的使用場景比如定義不定長的函數,你給出的這個例子就是。比如與操作系統和編譯環境有關的,比如__FILE__,__LINE__,DEBUG等。至于你講的可能的代替,我認為是定義常量、定義簡單的函數等。

查看完整回答
反對 回復 2018-07-13
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

樓上的意思對的,對于可以替換的宏定義,比如定義的宏常量,或者宏函數,盡量用const 或者內聯

查看完整回答
反對 回復 2018-07-13
  • 2 回答
  • 0 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號