我刚刚在一个函数中找到了这行代码,这让我很困惑.这在任何情况下都有意义,还是未定义的行为?
char * acFilename = acFilename;
Run Code Online (Sandbox Code Playgroud)
编辑:编译器抱怨警告C4700,我正在使用未初始化的变量.
nvo*_*igt 24
没有这个代码没有任何意义.这可能是一个错字,也许有人打算使用
char* acFilename = ::acFilename;
Run Code Online (Sandbox Code Playgroud)
要么
char* acFilename = m_acFilename;
Run Code Online (Sandbox Code Playgroud)
或者是其他东西.
就目前而言,它充其量只是令人困惑和无益,可能是一个错误,因为有人想要使用不同的变量.
Art*_*Art 19
我以前见过这个.由于gcc对其未初始化的变量警告非常满意,因此这是使这些警告静音的技巧.不确定它是gcc的有意设计选择还是编译器只是愚蠢,但我看到人们故意这样做以使gcc闭嘴(并且在此过程中打破了将来可能正确的警告).
我只需将其初始化为NULL替换它.这是一个坏习惯,不适用于其他编译器,并且NULL不能比不确定的值和未定义的行为更正确.
只是为了演示这是如何工作的(也是因为我想知道更新的gcc版本是否仍然这样做):
$ cat foo.c
int
foobar(void)
{
int foo;
return foo + foo;
}
$ cc -c -Wall -O2 foo.c
foo.c: In function ‘foobar’:
foo.c:6:13: warning: ‘foo’ is used uninitialized in this function [-Wuninitialized]
return foo + foo;
~~~~^~~~~
$ ed foo.c
[...]
$ cc -c -Wall -O2 foo.c
$ cat foo.c
int
foobar(void)
{
int foo = foo;
return foo + foo;
}
$ cc -c -Wall -O2 foo.c
$ cc -v
[...]
gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)
$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |