プロジェクトがデバッグ/リリース状態にあるかどうかに応じて、単純なメソッドを2回定義するのが良い習慣なのか悪い習慣なのか、私はいつも疑問に思っていました
。これはそれらをインライン化するためのものです。たとえば、Foo.h:
class Foo
{
public:
...
const bool& IsBoolean() const;
private:
bool _boolean;
};
#ifndef _DEBUG
/** We're in release, so let's advice compiler to inline this...
*
*
*/
inline const bool& Foo::IsBoolean() const
{
return _boolean;
}
#endif
そして今、Foo.cpp で:
#include "Foo.h"
...
#ifdef _DEBUG
/** We're debugging this, no need for inlining...
*
*
*/
const bool& Foo::IsBoolean() const
{
return _boolean;
}
#endif
これは完全に無駄ですか?たとえば、メソッドをすべて単独でインライン化/最適化するコンパイラ (MSVC) の機能が原因ですか?
それにもかかわらず、これは私が何年も前から使ってきたものです。ここで完全に間違っている場合は、修正してください...