typedef 语法中名称和类型的正确位置是什么?
What is the correct placement of names and types in the typedef syntax?
通常typedef的语法如下
typedef <existing_name> <new_name>
但是在下面的情况下,我有点困惑
typedef char yes[1];
typedef char no[2];
以上似乎可行。为什么以及如何?
不应该这样写吗?
typedef yes char[1];
typedef no char[2];
Usually the syntax of typedef is...
不,那不准确。通常的语法是
typedef <variable declaration>;
然后声明被分解,变量的 name 成为变量本来类型的新名称。您感到困惑的情况与此一致。在没有 typedef
的情况下,这就是您声明数组变量的方式。添加一个typedef
,变量名就变成了类型的新名称。
当然,现代类型别名实际上看起来更像您期望的那样
using yes = char[1];
using no = char[2];
从某种意义上说,这很好,因为它不需要理解 C++ 的声明符语法就可以看到类型的名称。不过,仍然需要了解在右侧编写类型的语法...
通常typedef的语法如下
typedef <existing_name> <new_name>
但是在下面的情况下,我有点困惑
typedef char yes[1];
typedef char no[2];
以上似乎可行。为什么以及如何?
不应该这样写吗?
typedef yes char[1];
typedef no char[2];
Usually the syntax of typedef is...
不,那不准确。通常的语法是
typedef <variable declaration>;
然后声明被分解,变量的 name 成为变量本来类型的新名称。您感到困惑的情况与此一致。在没有 typedef
的情况下,这就是您声明数组变量的方式。添加一个typedef
,变量名就变成了类型的新名称。
当然,现代类型别名实际上看起来更像您期望的那样
using yes = char[1];
using no = char[2];
从某种意义上说,这很好,因为它不需要理解 C++ 的声明符语法就可以看到类型的名称。不过,仍然需要了解在右侧编写类型的语法...