格式为`int Typedef my_int;`的Typedef声明
Typedef declaration in the form `int typedef my_int;`
要将my_int
声明为int
的类型别名,我们可以编写:
typedef int my_int; // (1)
奇怪的是,以下内容似乎也定义了int
别名:
int typedef my_int; // (2)
我以前从未见过这样的语法。为什么它有效?
在阅读C++引用后,我的推理是:(1(和(2(是形式的声明
specifiers-and-qualifiers declarators-and-initializers;
其中CCD_ 4是CCD_ 5或CCD_。
说明符和限定符的顺序无关紧要,(1(和(2(都是类型别名的有效声明。例如,为了定义const int
的别名,原则上我们可以使用以下6种组合中的任何一种:
typedef int const my_cint;
typedef const int my_cint;
int typedef const my_cint;
const typedef int my_cint;
int const typedef my_cint;
const int typedef my_cint;
事实上,正如这里所解释的,您的解释是正确的:
typedef说明符,当用于声明的decl说明符seq,指定声明是typedef声明,并声明typedef名称,而不是函数或对象。
然而,在现代c++中,类型别名最好用using
子句来定义:
using my_int = int;
这不仅仅是风格问题:typedef
不支持模板化,而类型别名支持:
template <typename T>
using my_list = list<T>; // not possible with typedef
...
my_list<double> numbers;
相关文章:
- C++:TypeDef使用元组
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 格式为`int Typedef my_int;`的Typedef声明
- 我可以防止将 int typedef 隐式转换为 int 吗?
- C typedef int arr [x] [y]在stackdump错误中失败
- typedef int* intptr OR typedef int *intptr;
- typedef equivalent for int
- What does typedef int var[1]; do?
- 为什么他用"typedef vector<double>::size_type"而不是用"int"
- const int*& vs typedef int* IntPtr
- C/C++:包含 int 和枚举的 typedef 结构的大小 == sizeof(int)
- C++/Qt 中的精确宽度整数:typedef int qint32 真的正确吗?
- 使用 FreeTDS 库时出现声明冲突的声明“typedef int RETCODE”错误
- 类中的编译器错误,数据类型为 typedef map<std::string,std::p air<std::string,vector<int>>> MapPai
- typedef int -> 整数。我可以在 c++ 中执行 cout-> 打印吗?
- typedef Vec<int, 2> Vec2i; 这个定义是什么意思?
- " long unsigned typedef int long ullong; "是什么意思?
- 将C++与Objective-C一起使用,如何修复"Conflicting declaration 'typedef int BOOL'"?