以下是一些使用 G++ (GCC) 版本 4.3.3 时导致警告的内联代码。我只在 ARM 机器上的旧版 GCC (4.3.3) 上遇到这个问题。在运行 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
}
问题是我收到警告:“在声明内联之前使用了 void MyClass::Cleanup()”
这是我应该关注的警告吗?我总是只在函数定义中内联,基本上遵循这个( http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html )“最佳实践”。
预先感谢您的帮助。
最佳答案
代码是有效的,因此来自旧 G++ 的警告是伪造的。
我不知道你是否应该担心。 G++ 可能会基于代码中存在问题的虚假信念而做出一些奇怪的事情,但我对此表示怀疑 - 它可能按预期工作,只是发出虚假警告。它可能无法将其内联到析构函数中,但这可能不是什么大问题,并且 -Winline
似乎表明情况并非如此。
关于c++ - G++ 内联警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719139/