是否存在任何方式执行链接时约束 - 检查对象实例是否在没有外部链接的情况下创建为静态,反之亦然?
例如:
// test.cpp
// correct
namespace{
static MyObject obj;
}
//test.h
struct Obj
{
// wrong
static MyObject m_obj;
}
在这种情况下,将错误链接为诊断消息即可。
据我所知,在编译时不可能创建类似的东西。
答案 0 :(得分:0)
糟糕的方式,但你可以使用宏(我不认为这是你需要的)
#define MyObject MyObject
...
#ifdef MyObject
#error somemessagethere
#endif
或者只需在.h文件中声明之前键入extern
我记得,在函数外部使用的static关键字意味着变量/函数实例只应存在于当前模块中。