根据此post: 未导出的全局变量仅对自己的模块可见。
我想知道在类的内联成员函数中定义的静态变量的故事是什么,
//cat.h
#ifdef EXPORT_ADD_
#define DLL_ __declspec(dllexport)
#else
#define DLL_ __declspec(dllimport)
#endif
Class DLL_ Cat
{
public:
static void foo()
{
static int i = 0;
std::cout << i++ << std::endl;
}
}
1)如果cat.h包含在多个模块中,例如d1.dll,d2,dll
和Cat :: foo()在每个模块中被调用
保证得到什么结果?
2)似乎__declspec(dllexport)和__declspec(dllimport)
起重要作用。
在我的测试中,
Class Cat {...} //DLL_ is removed
或
#define DLL_ //__declspec(dllimport) comment out dllimport
静态变量将不是唯一的
我想知道在嵌入式成员函数中处理静态变量的经验法则是什么。谢谢。