奇怪的c++语法:函数调用之前的类型定义
Weird C++ syntax: type definition before a function call
我正在阅读NodeJS和V8源代码,特别是node_contextify.cc
文件,我无法理解以下行:
Context::Scope context_scope(debug_context);
我不明白什么是Context::Scope
之前似乎是一个函数调用。我不认为这是一个声明,因为它是一个函数代码,以及一个if
和其他调用。
完整相关代码:
...
if (debug_context.IsEmpty()) {
// [... lines removed for brevity ...]
}
Context::Scope context_scope(debug_context);
MaybeLocal<Script> script = Script::Compile(debug_context, script_source);
if (script.IsEmpty())
return; // Exception pending.
args.GetReturnValue().Set(script.ToLocalChecked()->Run());
}
...
Context::Scope
是什么意思
进一步信息:
文件:节点/node_contextify。Cc(第268行突出显示)。
虽然我知道这是一个关于语法的基本问题,但我甚至不知道如何调用它,所以我无法在Google, StackOverflow或c++参考中找到任何结果。
问题标题是我搜索时的一个尝试。
使用debug_context初始化context_scope变量。Context::Scope是类型(这里有一个参考页http://bespin.cz/~ondras/html/classv8_1_1Context_1_1Scope.html)
这是另一篇关于如何正确使用Context::Scope的文章
顺便说一句,即使你不知道该怎么称呼它,搜索"v8 Context::Scope"也会出现相关信息。
Context::Scope context_scope(debug_context);
你正在声明一个Context::Scope
类型的对象context_scope
,并用debug_context
初始化它Context::Scope
可以是在类或结构中定义的类型,例如:
class Context {
public:
using Scope = int;
....
}
或者Context::Scope
可以是名称空间内定义的类型,例如:
namespace Context {
using Scope = int;
...
}
相关文章:
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 类型擦除的std::function与虚拟函数调用的开销
- 避免在人为的重载函数调用中拼写出类型
- PowerShell 使用结构类型参数调用 C++ DLL 的导出函数
- 没有使用两种类型的字符串进行匹配的函数调用
- 为什么此函数通过类型函数指针调用后,呼叫明智地行为
- 如何使用无类型函数指针调用C++成员函数
- 为什么函数调用是xvalue(如果返回类型为rvalue)
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 模板函数调用中C++错误:不允许使用类型名称
- 使用variadic模板进行函数调用的模板类型扣除
- 在函数调用中使用类型vector<pair<int,int>>::iterator&in
- 数组类型在函数调用中用作引用类型参数
- 函数调用之前,C 类型声明
- 类型强制转换指针构造函数调用
- 为什么 C++ 和 Java 中的构造函数调用需要显式类型参数
- 使用子类型重载调用函数
- 对未解析的重载函数类型的调用没有匹配的函数
- 使用可变包类型扩展的C++函数调用程序包装
- 为什么无法正确分析显式析构函数调用中的限定类型名称?