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

我记得,在函数外部使用的静态关键字意味着变量/函数实例应该只存在于当前模块中。

于 2012-05-30T12:37:17.580 回答