Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Disabling The Extensions(使擴展無效)

boost::hash 的擴展通常是有用的,但為了檢查你的代碼是否可以和 TR1 的其它實現一起工作,你有可能想將它們關掉。要做到這一點就定義這個宏 BOOST_HASH_NO_EXTENSIONS。當這個宏被定義的時候,只有在 TR1 中列舉的特化才被聲明。但是,如果你隨後取消這個宏定義並包含 <boost/functional/hash.hpp>,非特化形式就會被定義——激活了擴展。

強烈推薦你永遠不要取消這個宏定義——僅僅定義它以便它應用於整個編譯單元,你可以在主程序文件的開始定義它,更好的做法時,使用一個編譯開關或首選項。還有,你絕對不應該在頭文件中定義它。

如果你編寫一個庫,有些頭文件中的代碼需要這些擴展,最好的做法就是告訴用戶不要定義這個宏。它們的代碼不會 require(需要)這個宏。

帶著這個宏定義編譯的翻譯單元可以和不帶它編譯的翻譯單元連接。設計這個特性是為了避免 ODR 違反。


PrevUpHomeNext