c++ - 命名空间 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++ 库在需要声明/定义库使用但用户不应使用的东西时使用internal
(也通常称为)命名空间。detail
这是一种类似于“图书馆链接”的方式。希望如果/当模块到达 C++ 时,我们将有更好的方法来处理这个问题。
推荐阅读
- refresh-token - 刷新令牌时Xero-Api PHP身份验证不成功
- javascript - Vue2.x:如何使用自定义函数动态渲染元素?
- google-bigquery - 从财政年度中提取季度为真或假
- javascript - 为什么我会看到此错误:运行我的页面时无法读取未定义的属性“toUpperCase”?
- jquery - jQuery Ajax表单提交不起作用.Net MVC
- search - Google Analytics 网站搜索类别参数
- kubernetes - 如何在 kubernetes yaml 文件中指定同一作业中的两个 pod?
- machine-learning - 多项式回归中的 include_bias
- autodesk-forge - 使用 Forge Viewer Component (ng2-adsk-forge-viewer) Angular 中的类 Viewer
- python - pyspark - 将 .csv 文件从 url 加载到 Spark 时出错