【发布时间】:2013-11-01 00:49:10
【问题描述】:
以下是使用 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
}
问题是我收到警告:“void MyClass::Cleanup() 在声明为内联之前已使用”
这是我应该关注的警告吗?我一直只在函数定义中内联,基本上遵循这个 (http://www.parashift.com/c++-faq/where-to-put-inline-keyword.html)“最佳实践”。
提前感谢您的帮助。
【问题讨论】:
-
如果您打算实现
MyClass成员Cleanup(),您可能希望使用类名来解析内联。inline void MyClass::Cleanup()更有可能成为您的目标。 -
哎呀,忘了,这实际上是在代码中,但忘了把它放在我的问题中......见上面的编辑。
-
...这就是为什么发布真实代码总是一个好主意。
-
...这就是您因违反 NDA 等而被解雇的方式。另外,上面的代码是一个简单的、可重现的错误示例。当然我忘记了一件小事,但是让我休息一下,这是漫长的一天。
-
谁说过发布实际、受保护、抄写代码?你自己说的:上面是一个简单的可重现的例子。所以它不是你想要的原因是......因为它太简单了?让我休息一下。发布正确 概念代码可能很无聊,但回复不正确 概念代码也是如此,只是发现您认为没有问题的内容。它一次给你;我们每天都会看到它一百次。所以请原谅我,如果我要求注意避免它。很抱歉让您度过了漫长的一天,我的一天并没有更短,我可以保证。
标签: c++ gcc g++ inline compiler-warnings