c++ - 为什么在类声明之后放置 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;
解决方案
推荐阅读
- python - Python:requests.exceptions.SSLError
- ubuntu - External-IP 在 kubernetes-cluster 外部可见
- r - 如何在数组和矩阵上使用应用族函数而不是 R 中的 for 循环?
- android - 如何读取多个 nfc 标签有效负载并存储到数组列表中?
- javascript - ExpressJs in undifine value get (显示[object])
- sql-server - 将 SSIS 包移至生产环境
- java - 传递适配器时自定义 RecyclerView 为空
- c# - 如何在 Xamarin.Android 中使用 Value Animator?
- javascript - 使用父母选择器过滤
- node.js - cucumber hooks(@Before and @After)中的标签如何组织