C++核心準則ES.33:如果必須使用宏定義,命名要有唯一性

ES.33: If you must use macros, give them unique names

ES.33:如果必須使用宏定義,命名要有唯一性

 

Reason(原因)

Macros do not obey scope rules.

宏定義不會遵守作用域準則。

 

Example(示例)

#define MYCHAR        /* BAD, will eventually clash with someone else's MYCHAR*/

#define ZCORP_CHAR    /* Still evil, but less likely to clash */

 

Note(注意)

Avoid macros if you can: ES.30, ES.31, and ES.32. However, there are billions of lines of code littered with macros and a long tradition for using and overusing macros. If you are forced to use macros, use long names and supposedly unique prefixes (e.g., your organization's name) to lower the likelihood of a clash.

首先是儘量避免使用宏定義,如果可以的參照ES30,31,32中的方法。然而存在數以十億計遍佈宏定義的代碼,也長期存在使用和過度使用宏定義的傳統。如果你被迫使用宏定義,使用足夠長的名稱並可以相信存在唯一性的前綴(例如你所屬組織的名稱)以便儘量減低衝突的可能性。

 

Enforcement(實施建議)

Warn against short macro names.

對短的宏名稱提出警告。

 

原文鏈接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es33-if-you-must-use-macros-give-them-unique-names

 


 

覺得本文有幫助?歡迎點贊並分享給更多的人。

閱讀更多更新文章,請關注微信公衆號【面向對象思考】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章