首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型定义语句是否相等?

类型定义语句是否相等?
EN

Stack Overflow用户
提问于 2013-12-03 05:59:21
回答 1查看 52关注 0票数 0

我需要导出模板专门化。

下列定义相等吗?

代码语言:javascript
复制
typedef std::vector<int> MY_API MyIntArray; // (1)

template class MY_API std::vector<int>; // (2)
typedef std::vector<int> MyIntArray;

常见的MY_API宏定义看起来类似于#define MY_API __declspec(dllexport)

另一个问题是

我已经看到了一堆关于跨模块/dll边界使用STL类的问题,以及潜在的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 06:05:17

不-- typedef是一个稍微聪明的#define版本,它将指定的名称等同于指定的类型。它在编译器的符号表中添加一个条目,表示该名称代表该类型。

不过,typedef只会做更多的事情。它没有具体地实例化指定的类型,因此它不等同于对所述模板的显式实例化。(为什么它不显式地实例化类型:例如,因为您可以创建一个不完整类型的typedef,在类型完成之前不能实例化)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20343958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档