【发布时间】:2012-01-15 23:13:39
【问题描述】:
给定如下结构
class A {
int test;
void f() { int test; }
}
我刚遇到一个奇怪的情况,f() 中的代码在引用 test 时,在 VS2010 下编译时,正确地引用了函数局部变量,然而,在 gcc 下编译时,错误地引用了成员变量。我花了很长时间才找到。
无论如何,问题是,在 gcc 或 VS 中是否有一个选项可以在每次在本地函数范围内重新声明成员变量时启用编译器警告?
【问题讨论】:
-
我建议不要使用相同的名称,而不要尝试查找编译器开关。
-
@cookie - 它给你一个警告是有原因的 - 即你无意中隐藏了一些东西。改个名字就行了! (顺便说一句,你应该找到编译器开关来给你尽可能多的警告 - 编写编译器的人会比你或我更了解语言的来龙去脉)
-
@crashmstr:这正是重点。您将如何查找代码库中的所有匹配项?
-
@cookie - 但它给你警告是有原因的。
-
@EdHeal:让我再说一遍。我没有收到任何形式的警告
标签: c++ compiler-construction scope declaration