c++ - G++ 内联警告

标签 c++ gcc g++ inline compiler-warnings

以下是一些使用 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/

相关文章:

c++ - Visual C++ 和 gcc 之间从 std::isblank 返回的结果不一致。哪一个是错误的?

unsigned int 和 unsigned long int 之间的 C++ 区别

c++ - G++未定义对类::函数的引用

c - 在 gcc 上编译时发生错误

C++:无法理解为什么编译器不会对此代码给出错误并且它可以正常工作

c# - C# 是如何受到 C++ 而非 Java 的启发的?

c++ - OpenGL:当两个对象与线绑定(bind)时卡住

c++ - 我在哪里可以找到标准容器和算法的所有异常保证?

C++ DirectX11 : NullPtr error using DirectX tool kit

c - GNU ld : weak declaration overriding strong declaration