我目前工作的一個頭只圖書館,我希望能夠用一些宏沒有他們是從客戶端代碼可用可用。例如:避免宏爲從客戶端代碼
// library_header1.h
#define MACRO_NUMBER_1(__X__) doSomethingWith(__X__) // etc...
class LibraryClass1
{
// We'll use the macro somewhere in here.
};
現在,如果我包含library_header1.h,我可以使用MACRO_NUMBER_1。有什麼辦法可以避免嗎?
'#undef'?...... –
'#undef'似乎工作正常,但我也想知道是否有任何方式宏沒有定義(以便autocomplete/intellisense不給他們看)。 –
您正在以源代碼形式提供您的圖書館。你不能希望隱藏實現。不管它是否顯示宏,它都取決於Intellisense的實現。對於Microsoft的編譯器,您可以檢查使用['#pragma push_macro'](http://msdn.microsoft.com/en-us/library/2bs04eza.aspx)/'pop_macro'是否對Intellisense實現有任何影響。 – IInspectable