这个 typedef 定义是什么意思
What does this typedef definition mean?
我看到了以下内容(C++):
typedef n *(m)(const n*, const n*);
它是什么意思以及如何使用它?
我明白这一点:
typedef n (*myFunctP)(const n*, const n*);
但是与上面的 typedef 有什么区别?
(希望这不是重复的,没有找到类似的东西...
我要求乔迪为我赢得一些代表:
<tomalak> << TYPE_DESC<m>; struct n {}; typedef n *(m)(const n*, const n*);
<geordi> function taking 2 pointers to constant ns and returning a pointer to a n
C 类型声明语法很糟糕,当您开始执行这样的复杂声明时,它确实变得特别明显。请注意返回类型和参数是如何围绕m
而不是n
编写的,这完全是直觉的倒退,因为它是你正在创建的m
。
第二个示例是:
<tomalak> << TYPE_DESC<m>; struct n {}; typedef n (*m)(const n*, const n*);
<geordi> pointer to a function taking 2 pointers to constant ns and returning a n
通过移动*
,您不再将其应用于函数类型的返回类型,而是应用于函数类型本身。
在C++11中,除非你迫切需要你的通话超高效,否则请坚持以下内容,为了克苏鲁的爱! :-)
typedef std::function<n*(const n*, const n*)> m;
如果您希望坚持使用函数指针,则可以:
using m = n*(const n*, const n*);
在此之前,您可以使用boost::function
或学习可怕的 C 声明符规则。的确,您应该了解它们;只是希望您不必经常使用它们。
第一个 typedef 为函数创建一个别名,该函数接受 2 个参数并返回指向 n
的指针。
第二个 typedef 为指向函数的指针创建一个别名,该函数接受 2 个参数并按值返回n
。
在第一种情况下,typedef 为函数类型定义了一个别名,该函数类型具有两个数据类型为 const n *
和返回类型n *
在第二种情况下,不是函数类型,而是具有返回类型 n 的函数指针的声明。
在第一种情况下,您也可以例如
typedef n * ( (m)(const n*, const n*) );
它等效于你的类型定义。
至于用法,您可以将其用作函数声明。例如
m MyFunc;
另一个例子
struct A
{
typedef int n;
typedef n ( Operation )( n, n ) const;
Operation Add;
Operation Subtract;
Operation Division;
Operation Multiply;
};
// and below the function definitions
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?