在阅读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是否兼容?
通常,C ++库在需要声明/定义库所使用但不应该由用户使用的内容时,都会使用internal(也称为detail)命名空间。
这是一种类似于“库链接”的方式。希望/当模块到达C ++时,我们将有更好的方法来处理此问题。