0

オブジェクトインスタンスが外部リンクなしで静的として作成された場合、またはその逆の場合、リンク時の制約チェックを実行する方法はありますか?

例えば:

// test.cpp

// correct
namespace{
static MyObject obj;
}

//test.h

struct Obj
{
    // wrong
    static MyObject m_obj;
}

この場合、診断メッセージとしてエラーをリンクしても問題ありません。

私が理解している限り、コンパイル時に同様のものを作成することは不可能です。

4

1 に答える 1

0

悪い方法ですが、マクロを使用できます(必要なものではないと思います)

#define MyObject MyObject
...
#ifdef MyObject
#error somemessagethere
#endif

または、.h ファイルの宣言の前に extern と入力するだけです。

私が覚えているように、関数の外部で使用される static キーワードは、変数/関数インスタンスが現在のモジュールにのみ存在する必要があることを意味します。

于 2012-05-30T12:37:17.580 に答える