以下代码无法编译:
#define SOME_MACRO(x,y) x+y
#define ADD_ONE_TO(x) SOME_MACRO(x,1)
#undef SOME_MACRO
int main(){
ADD_ONE_TO(1);
}
有没有什么技巧可以:
- 通过在SOME_MACRO中具有常见功能并在其他宏中使用它来避免代码重复,但是通过undef使其不能在常见用户代码中使用。
- 以某种方式使ADD_ONE_TO宏只是将它使用的宏复制粘贴而不是引用它们。
- 防止用户代码访问和使用SOME_MACRO,但允许在代码的其他特定部分(其他,选择,宏)中使用它。
- 通过禁止访问(undef或其他方式)要隐藏宏内部的宏来隐藏宏的实现。
ADD_ONE_TO
,则SOME_MACRO
也必须在某个地方定义,否则代码将无法编译。 - dxiv@define SOME_MACRO(x,y) (x+y)
这样。 - kesarling He-Him