为什么结构声明不会发生名称冲突
Why is no name collision occuring with struct declaration
我创建了一个结构:
struct number_struct
{
int i;
float f;
} struct_a;
因此struct_a属于number_struct类型。
稍后在 int main 中我写道:
number_struct struct_a = { 0 };
number_struct struct_b = { 0 };
令人困惑的是,由于我已经声明了两次struct_a,我希望来自视觉工作室的消息说它已被声明了两次,也就是名称冲突。为什么不会发生这种情况?如果我声明两次struct_b但在主例程中,确实会发生。
除此之外,如果我在不初始化结构的情况下执行以下操作:
std::cout << struct_a.i << "t" << struct_b.i << std::endl;
std::cout << struct_a.f << "t" << struct_b.f << std::endl;
我收到一个运行时错误,指出在没有初始化的情况下使用了 sturct。为什么编译器不自动将结构(和标准类型变量)初始化为 0?
struct number_struct {
int i;
float f;
} struct_a;
在全局范围内创建number_struct
的实例。然后,在 main
中创建 number_struct
的实例,这将隐藏在全局范围内创建的实例。 要访问全局作用域中的实例,请使用作用域解析运算符 ::struct_a
。
至于运行时错误,您编译的版本是什么? 该标准说将全局变量初始化为 0(并不是说你不应该显式初始化自己)。
相关文章:
- 结构字段名称与 GDB 中的 STL 数组冲突
- 模板冲突的类型-但类型应该是相同的cfr类层次结构
- 从结构传递数组成员会导致访问读取冲突
- 错误:多个文件中的结构声明冲突
- constexpr静态结构类成员的声明冲突
- 尝试创建结构对象,在位置0x3FE00000中创建访问冲突写入错误
- Windows MSG 结构与旧项目代码结构 MSG 冲突
- C 全局结构创造了名称冲突
- 在类层次结构中,完美的转发构造函数和复制构造函数之间的冲突
- C++结构构造函数和函数冲突
- 写入结构变量时发生strcpy访问冲突
- 读取位置/使用结构的矢量时发生未处理的异常访问冲突
- 内部和外部结构的符号冲突,C++ vs C
- 结构中的 std::list 导致内存冲突错误
- 当函数在fread()应用于局部结构变量后返回时发生访问冲突
- 使用结构和数组而不使用指针的访问冲突
- C++ 当命名空间发生冲突时,为什么结构/类不与变量和函数发生冲突?
- 内存访问冲突插入结构在树结构c++
- c++结构访问冲突
- 在c++中删除多维结构会导致访问冲突