下面是一些内联代码,使用G++ (GCC)版本4.3.3发出警告。我只看到这个(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
}问题是,我收到了警告:“在内联声明之前使用了void::Cleanup()”
这是我自己应该关注的警告吗?我一直只在函数定义中内联,基本上遵循以下(http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html)“最佳实践”。
提前谢谢你的帮助。
发布于 2013-11-01 00:56:25
代码是有效的,因此来自旧G++的警告是假的。
但我不知道你是否应该担心。G++可能会做一些奇怪的事情,因为它认为代码中存在问题,但我对此表示怀疑--它可能如预期的那样工作,只是发出虚假的警告。它可能无法将其内联到析构函数中,但这可能不是什么大问题,而且-Winline似乎表明情况并非如此。
https://stackoverflow.com/questions/19719139
复制相似问题