C++ で Windows COM をプログラミングしています::
が、グローバル名前空間バージョンが呼び出されるように、多くの関数にプレフィックスが付けられていることがわかります。何故ですか?
名前空間との競合が発生する可能性があることは理解していますが、COM では、すべての関数を明示的に解決しなければならないほど偏執的になってしまうようなことが頻繁に発生するのでしょうか?
私がよく目にする例を次に示します。
wStrLen = ::SysAllocStringLen(NULL, wStr);
::SysFreeString(str);
::CoTaskMemFree(item);
そして他の多く。
プログラマーが名前空間を明示的に解決することを選択した理由と、単に記述しなかった理由は、私を困惑させます。
wStrLen = SysAllocStringLen(NULL, wStr);
SysFreeString(str);
CoTaskMemFree(item);
何か案は?