C++ 在Chrome V8引擎源代码中,这对您意味着什么?

C++ 在Chrome V8引擎源代码中,这对您意味着什么?,c++,v8,C++,V8,我对下面的代码有一个问题 #define V8_DECLARE_ONCE(NAME) ::v8::base::OnceType NAME 在cpp文件中,“::”表示引用命名空间,但其中包括“::v8” std::cout << ... << std::endl; ::ns表示在根命名空间中查找ns。这是为了避免可能的名称空间冲突,因为如果您定义自己的名称空间并且名称相同,它可以避免查找当前名称空间。这里有一个例子来说明这种差异 #include <iostre

我对下面的代码有一个问题

#define V8_DECLARE_ONCE(NAME) ::v8::base::OnceType NAME
在cpp文件中,“::”表示引用命名空间,但其中包括“::v8”

std::cout << ... << std::endl;

::ns
表示在根命名空间中查找
ns
。这是为了避免可能的名称空间冲突,因为如果您定义自己的名称空间并且名称相同,它可以避免查找当前名称空间。这里有一个例子来说明这种差异

#include <iostream>

namespace v8 {

constexpr int val = 5;

} // namespace v8

namespace my {
namespace v8 {

constexpr int val = 10;

} // namespace my::v8

void some_func()
{
  std::cout << ::v8::val << ", " << v8::val << '\n';
}

} // namespace my

int main()
{
  my::some_func();
}
#包括
命名空间v8{
constexpr int val=5;
}//命名空间v8
名称空间我的{
命名空间v8{
constexpr int val=10;
}//名称空间my::v8
使某些函数无效()
{

std::cout
::v8
的意思是“从顶级名称空间获取我
v8
”太好了!!我找到了!Thx:)
#include <iostream>

namespace v8 {

constexpr int val = 5;

} // namespace v8

namespace my {
namespace v8 {

constexpr int val = 10;

} // namespace my::v8

void some_func()
{
  std::cout << ::v8::val << ", " << v8::val << '\n';
}

} // namespace my

int main()
{
  my::some_func();
}