在这种情况下,Windows确保内联成员函数中定义的静态变量在模块(dll / exe)中是唯一的吗?

时间:2018-07-25 16:59:43

标签: c++ visual-c++ dll

根据此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

静态变量将不是唯一的

我想知道在嵌入式成员函数中处理静态变量的经验法则是什么。谢谢。

0 个答案:

没有答案