繁体   English   中英

使用标记名称创建结构变量

[英]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 sclass ss没有区别,它们都意味着相同。

为了定义的类型名称s在C / C ++共享头,一个典型地写入

typedef struct {
   ...
} s;

然后类型s可以在C和C ++中使用,而无需编写struct

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM