使用标记名称创建结构变量
Creating struct variable using the tag name
我在以下链接中阅读了一篇文章
http://www.embedded.com/electronics-blogs/programming-pointers/4024450/Tag-vs-Type-Names
在这里,作者说,使用羽翼是错误的。
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 s {
...
};
定义标记名称s
。要命名实际类型,您可以编写struct s
(C 或 C++)或class s
(仅限 C++),但C++使这两个关键字都是可选的(并且几乎从未实际使用过)。因此,每当你用C++编写s
时,它实际上被解释为正确的类型,而在 C 中,关键字必须命名类型。
长话短说:在C++中,struct s
、class s
或s
的写作没有区别,它们的意思都是一样的。
为了定义 C/C++ 共享标头中的类型名称s
,通常写入
typedef struct {
...
} s;
然后,s
类型可以在 C 和 C++ 中使用,而无需编写 struct
。
相关文章:
- 创建结构的数组时遇到分段错误
- 如何在 c++ 中创建结构向量的映射
- 为什么我们再次从结构对象创建结构变量?
- 如何在C++中为堆栈动态创建结构?
- 如何创建结构的结构结构,等等嵌套多个结构?
- 创建结构作为枚举类成员
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 创建结构体向量,表达式:向量下标超出范围
- variadic宏来创建结构
- C++类中创建结构的向量
- 如何动态创建 C++ 结构
- 如何在C++循环中创建结构成员
- 如何读取文件中的数据并创建结构向量
- C++从 DLL 创建结构
- 动态数组添加元素而不创建结构变量/对象
- 创建结构并传递IT功能
- c ++ 当我创建结构数组时,如何使用结构数组内的类的参数调用构造函数
- 尝试创建结构对象,在位置0x3FE00000中创建访问冲突写入错误
- 如何创建结构类型数组的地图对象
- 在C 中创建结构数组