Yst*_*tar 12 c variables warnings c99
我一般都想避免像这样的代码:
#include <stdio.h>
int main(int argc, char *argv[]){
int n = 3;
for (int n = 1; n <= 10; n++){
printf("%d\n", n);
}
printf("%d\n", n);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到变量的这种用法?这意味着,在同一函数中,"更本地"变量与更全局变量具有相同的名称?
C标准:C 99
Sha*_*our 14
gcc和clang都支持该-Wshadow标志,该标志将警告相互影响的变量.例如,我从gcc您的代码收到的警告如下:
warning: declaration of ‘n’ shadows a previous local [-Wshadow]
for (int n = 1; n <= 10; n++){
^
warning: shadowed declaration is here [-Wshadow]
int n = 3;
^
Run Code Online (Sandbox Code Playgroud)
gcc在这里记录国旗并说:
每当局部变量或类型声明影响另一个变量,参数,类型,类成员(在C++中)或实例变量(在Objective-C中)或内置函数被遮蔽时发出警告.请注意,在C++中,编译器会警告局部变量是否影响显式typedef,但如果它影响struct/class/enum则不会.
在Visual Studio中,这看起来像以前不可能,但似乎在最近的版本中修复.
| 归档时间: |
|
| 查看次数: |
13444 次 |
| 最近记录: |