[英]Creating struct variable using the tag name
我在以下链接中阅读了一篇文章
http://www.embedded.com/electronics-blogs/programming-pointers/4024450/Tag-vs-Type-Names
在这里作者说,使用follwing是错误的。
struct s
{
--
};
s var;
但在我的示例代码中,它的工作完美。
1 #include<iostream>
2 using namespace std;
3
4 struct s
5 {
6 int sd;
7 };
8 s v;
9
10
11
12 int main()
13 {
14
15 v.sd=10;
16 cout<<v.sd;
17 return 0;
18 }
编辑:
有什么实际的区别? 为什么它在c ++中工作而在c中不起作用;
这是C ++和C之间的区别。您引用的作者在使用C ++代码而不是C代码时会谈到C语言。 在C中,您必须在声明相应类型的变量之前指定关键字struct,union或enum。
文章说用户定义的类型使用
struct s {
...
};
定义标签名称 s
。 要命名实际类型 ,可以编写struct s
(C或C ++)或class s
(仅限C ++),但C ++使两个关键字都可选(并且几乎从未实际使用过)。 因此,无论何时用C ++编写s
,它实际上都被解释为正确的类型,而在C中,关键字必须命名为类型 。
长话短说:在C ++中,编写struct s
, class s
或s
没有区别,它们都意味着相同。
为了定义的类型名称s
在C / C ++共享头,一个典型地写入
typedef struct {
...
} s;
然后类型s
可以在C和C ++中使用,而无需编写struct
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.