名称空间v8和名称空间v8 :: internal之间有什么区别?

Hub*_*des 1 c++ v8

在阅读v8的源代码时,我有一个我不太了解的部分。

  v8::Isolate::CreateParams create_params;
  create_params.array_buffer_allocator =
      v8::ArrayBuffer::Allocator::NewDefaultAllocator();
  v8::Isolate* isolate = v8::Isolate::New(create_params);
Run Code Online (Sandbox Code Playgroud)

我跟踪了v8 :: Isolate :: New的实现,然后发现以下代码:

// static
Isolate* Isolate::Allocate() {
  return reinterpret_cast<Isolate*>(i::Isolate::New());
}
Run Code Online (Sandbox Code Playgroud)

因为我读了一些代码,所以我知道“ i”的意思是“内部的”,但是我不确定其余的内容。v8 :: Isolate和v8 :: internal :: Isolate是否兼容?

Aco*_*orn 5

通常,C ++库在需要声明/定义库所使用但不应该由用户使用的内容时,都会使用internal(也称为detail)命名空间。

这是一种类似于“库链接”的方式。希望/当模块到达C ++时,我们将有更好的方法来处理此问题。