c++ - 为什么在同一个作用域中声明多个相同的名称会导致程序格式错误?

标签 c++ language-lawyer

int main(){
   int a = 0; //#1
   int a = 1;  //#2
}

考虑上面的代码,我只发现一些与问题有关的引号是,
[basic.scope.declarative]

Given a set of declarations in a single declarative region, each of which specifies the same unqualified name:
1. they shall all refer to the same entity ,or all refer to functions and function templates;



上面的引号是对为什么程序格式错误的一种解释。如果有多个声明声明了相同的名称来表示变量。如果不是,请用一些引号来更正我,这些引号解释了这种情况下格式错误的原因。

最佳答案

因为这会导致命名冲突。这两个变量引用了不同的内存位置,但是共享相同的标识符(名称),因此当您在程序中引用它们之一时,编译器将无法区分两者。
请记住,创建这样的命名冲突不是不好的做法,它违背了C++的语法,并会导致编译时错误。

关于c++ - 为什么在同一个作用域中声明多个相同的名称会导致程序格式错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61652620/

相关文章:

c++ - 使用 ref-qualifiers 的重载决议

swift 2.0 : Parametrized classes don't call proper == function if it inherits from class that is Equatable

c++ - 为什么将 sceneManager 设置为 sceneNode 的父级会在 Irrlicht 中抛出错误?

c++ - 为什么我们在 pimpl 中使用 'new'?

c++ - 使用 C++ 将多个值插入 mysql 数据库表时出现问题

c++ - sizeof(struct)... 给出错误结果,VS 2010

c++ - 具有实际独立的依赖表达式的 static_assert

c++ - 非成员函数模板什么时候有内部链接?

c++ - 终止处理程序可以抛出异常吗?

c++ - 为什么 std::cout 将 volatile 指针转换为 bool?