【发布时间】:2012-01-08 21:10:17
【问题描述】:
为什么 GCC 4.7 在函数内(使用指针)实例化类时会报错?
不好:
#include "foo.h"
int fn () {
Foo *foo;
foo->method();
return 0;
}
main.cpp:在成员函数“int foo()”中: main.cpp:21:52:警告:“fn”可能在此未初始化时使用 函数[-Wuninitialized]
好:
#include "foo.h"
Foo *foo;
int fn () {
foo->method();
return 0;
}
好:
#include "foo.h"
int fn () {
Foo foo;
foo.method();
return 0;
}
【问题讨论】:
-
静态变量是值初始化的,所以第二个 sn-p 不会引起警告。剩下的,找一本关于 C++ 的好书。
-
您能否注意发布错误,完全按照编译器报告的错误来发布您发布的确切代码。 “main.cpp: In member function 'int foo()': main.cpp:21:52: warning: 'fn' may be used uninitialized in this function [-Wuninitialized]” 这没有意义,
foo不是一个函数更不用说成员函数了,fn不是一个变量。 -
您复制的错误消息中的名称
foo和fn似乎已颠倒过来。无论是那个还是 C++ 编译器消息都达到了新的误导水平。 -
@Charles Bailey,有很多额外的代码,所以我留下了唯一重要的
-
@Duglas:如果您编辑代码,您应该重新编译并粘贴编辑后代码的编译器的确切输出,否则人们会注意到差异并且不会相信您已发布您需要帮助的实际代码。
标签: c++ gcc gcc-warning