首页 > 解决方案 > 为什么在类声明之后放置 dllexport 会消除 C++ 中的 C4251 警告

问题描述

在 MSVC 中,当我编写一个带有 std::unordered_map 成员的类时,如下所示,

class DLLEXPORT TTT
{
    std::unordered_map<int, int> _map;
};

给出 C4251 警告:

warning C4251: 'TTT::_map' : class 'std::unordered_map<_Kty,_Ty>' needs to have dll-interface to be used by clients of class 'TTT'  ...

其中DLLEXPORT宏处于正常模式,扩展至__declspec(dllexport)__declspec(dllimport)在正确的位置。

我的问题是:如果放在DLLEXPORT这个类声明之后,C4251 警告就消失了,为什么?

class TTT
{
    unordered_map<int, int> _map;
};
class DLLEXPORT TTT;

标签: c++visual-c++dllexport

解决方案


推荐阅读