天天看點

Effective C++ Third Edition 讀書筆記 2

Item 2: Prefer consts, enums, and inlines to #defines

這一章再次批判了#define預處理,包括常量定義及宏。對于常量來說是不友善運作時調試,也許對于Source Insight這樣的工具很容易找到1.653這樣的魔鬼數字,但如果出錯的地方是1.0這樣的數字就不行了。對于宏主要是++的副作用,這個是C語言的遺留問題了,本書中用Template替代宏,但作者注重的是inline,對于inline還有待于研究。

本章還涉及了一些其他問題,如enum hack,算是一種小技巧吧,想起另外一個C語言中計算結構體成員偏移量的技巧:#define XXX_OFFSETOF(type, field) (int & (((type *)0x02)->field)-0x20)

Const的用法主要在下一章中介紹。

英文版中p16,// pass by reference to cont - see Item 20 換行不好,寫到f(a>b?a:b);去了,勘誤一下。

繼續閱讀