C++ C++;:特殊类型定义
从中,typedef语法为:C++ C++;:特殊类型定义,c++,typedef,v8,C++,Typedef,V8,从中,typedef语法为: typedef existing_type new_type_name; 然而,在中,有许多typedef似乎与其他一些语法一起工作。比如说, typedef void(* FunctionCallback )(const FunctionCallbackInfo< Value > &info) typedef void(*FunctionCallback)(常量FunctionCallbackInfo&info) 有两件事我不明白: 1
typedef existing_type new_type_name;
然而,在中,有许多typedef似乎与其他一些语法一起工作。比如说,
typedef void(* FunctionCallback )(const FunctionCallbackInfo< Value > &info)
typedef void(*FunctionCallback)(常量FunctionCallbackInfo&info)
有两件事我不明白:1-FunctionCallbackInfo
2-没有空格分隔现有类型和新类型名称
正确的阅读方法是什么 编辑:我正在接收所有typedef信息。
typedef void(*FunctionCallback)(const FunctionCallbackInfo&info)
将类型
FunctionCallback
定义为指向函数的指针,该函数接受const FunctionCallbackInfo&
并返回void
。我一直在推广这个规则,我发现它在阅读复杂的指针声明时非常有用:。老歌,但黄金;) 您对typedef
语法的理解有点不准确。这不是:
typedef existing_type new_type_name;
更像是:
typedef declaration;
因此,您的示例是一个名为
functionalcallback
的函数指针类型的typedef
声明,它返回void
,并将对const functionalcallbackinfo
的引用作为其唯一参数。理解typedef的最佳方法是不要将其视为
typedef existing_type new_type_name;
理解这一点的最佳方法是将其与正则变量或类成员声明进行比较。例如:
char *ptr_func;
这将ptr_func
声明为指向字符的指针。现在,当您在其前面粘贴一个typedef
时,实际上是将其转换为一个类型定义,而不是一个变量声明:
typedef char *ptr_func;
void(*FunctionCallback )(const FunctionCallbackInfo< Value > &info);
现在,它将ptr_func
声明为表示字符指针的类型
现在,让我们以变量声明的形式来看您的示例:
typedef char *ptr_func;
void(*FunctionCallback )(const FunctionCallbackInfo< Value > &info);
void(*FunctionCallback)(const FunctionCallbackInfo&info);
这是什么?这声明了一个FunctionCallback
,它是一个指向函数的指针,该函数接受const FunctionCallbackInfo&
参数,返回一个void
因此,从逻辑上讲,在其前面粘贴
typedef
会将其转化为FunctionCallback
的定义,该类型是指向函数的指针,该函数采用const FunctionCallbackInfo&
参数,返回一个void
读取:btw,许多人喜欢别名声明而不是typedef。对于那些语法更简单的人,使用新的\u名称=现有的\u类型\u id代码>是的。基本上,在任何有效声明前面加上typedef
将创建一个类型别名,而不是一个变量。