我目前工作的一个头只图书馆,我希望能够用一些宏没有他们是从客户端代码可用可用。例如:避免宏为从客户端代码
// 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