我正在用 C++ 编写 Windows COM,我看到很多函数都带有前缀,::
因此全局命名空间版本被调用。这是为什么?
我知道命名空间可能存在冲突,但是在 COM 中是否经常发生这种情况,以至于每个人都变得如此偏执,以至于现在必须明确解决每个函数?
下面是一些我经常看到的例子:
wStrLen = ::SysAllocStringLen(NULL, wStr);
::SysFreeString(str);
::CoTaskMemFree(item);
还有许多其他人。
这让我感到困惑,为什么程序员选择显式解析命名空间以及为什么他们不只是写:
wStrLen = SysAllocStringLen(NULL, wStr);
SysFreeString(str);
CoTaskMemFree(item);
有任何想法吗?