这是一些使用G ++(GCC)版本4.3.3引发警告的内联代码。我只在ARM机器上的这个(4.3.3)较旧的GCC版本上遇到此问题。在运行GCC 4.5.2的x86计算机上,此问题不存在。不幸的是,我目前无法更新ARM机器,但我想知道我是否应该关注以下错误......
// myclass.h
class MyClass {
public:
MyClass();
~MyClass() { Cleanup(); }
void Cleanup();
};
inline void MyClass::Cleanup() {
// do some minor cleanup here, GCC DOES inline this function
// with -Winline, I see that no non-inline warnings are thrown
}
问题是我收到警告:“在内联声明之前使用了无效的MyClass :: Cleanup()”
这是一个我应该关注的警告吗?我总是只在函数定义中内联,基本上遵循这个(http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html)“最佳实践。”
提前感谢您的帮助。
答案 0 :(得分:4)
代码有效,因此旧G ++的警告是假的。
我不知道你是否应该担心。 G ++可能会根据其认为代码中存在问题的虚假信念做出奇怪的事情,但我对此表示怀疑 - 它可能会按预期运行并且只是发出虚假警告。它可能无法将其内联到析构函数中,但这可能不是什么大问题,-Winline
似乎表明情况并非如此。