首页 > 解决方案 > 命名空间 v8 和命名空间 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”的意思是“内部”,但我不确定其余的。v8::Isolate 和 v8::internal::Isolate 兼容吗?

标签: c++v8

解决方案


通常,C++ 库在需要声明/定义库使用但用户不应使用的东西时使用internal(也通常称为)命名空间。detail

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


推荐阅读