Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:特殊类型定义_C++_Typedef_V8 - Fatal编程技术网

C++ C++;:特殊类型定义

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语法为:

typedef existing_type new_type_name;
然而,在中,有许多typedef似乎与其他一些语法一起工作。比如说,

typedef void(*  FunctionCallback )(const FunctionCallbackInfo< Value > &info)
typedef void(*FunctionCallback)(常量FunctionCallbackInfo&info)
有两件事我不明白:
1-FunctionCallbackInfo是在命名空间中定义的类,而FunctionCallback不是;现有类型不应该放在第一位吗?
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
将创建一个类型别名,而不是一个变量。