命名空间 v8 和命名空间 v8::internal 有什么区别?
What's difference between namespace v8 and namespace v8::internal?
在阅读v8的源代码时,我有一部分不是很了解。
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator =
v8::ArrayBuffer::Allocator::NewDefaultAllocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
我跟踪了 v8::Isolate::New 的实现,然后我发现了以下代码:
// static
Isolate* Isolate::Allocate() {
return reinterpret_cast<Isolate*>(i::Isolate::New());
}
因为稍微看了下代码,知道'i'是'internal'的意思,其他的就不清楚了。 v8::Isolate 和 v8::internal::Isolate 兼容吗?
通常,C++ 库在需要时使用 internal
(通常也称为 detail
)命名空间 declare/define 库使用但不应使用的内容由用户。
这是一种类似于"library linkage"的方法。希望 if/when 模块到达 C++,我们将有更好的方法来处理这个问题。
在阅读v8的源代码时,我有一部分不是很了解。
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator =
v8::ArrayBuffer::Allocator::NewDefaultAllocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
我跟踪了 v8::Isolate::New 的实现,然后我发现了以下代码:
// static
Isolate* Isolate::Allocate() {
return reinterpret_cast<Isolate*>(i::Isolate::New());
}
因为稍微看了下代码,知道'i'是'internal'的意思,其他的就不清楚了。 v8::Isolate 和 v8::internal::Isolate 兼容吗?
通常,C++ 库在需要时使用 internal
(通常也称为 detail
)命名空间 declare/define 库使用但不应使用的内容由用户。
这是一种类似于"library linkage"的方法。希望 if/when 模块到达 C++,我们将有更好的方法来处理这个问题。