我在C ++中有这个特殊的宏功能:
你能给我解释一下它是如何工作的:
#define EXAMPLE(obje) (::f(s, (obje), arg1, arg2, arg3))
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
1)是什么::f意思?编译器在哪里搜索函数f?
2)是什么(obje)意思?为什么在括号之间?
::f(...)-调用ffuncion仅搜索全局范围(避免自变量依赖查找)。(假设f是一个函数)。
(obje)- obje带有圆括号。取决于是什么obje。避免obje宏扩展时产生奇怪影响的典型宏技巧。