鱼C论坛

 找回密码
 立即注册
查看: 1226|回复: 4

一个模板声明的解析

[复制链接]
发表于 2015-7-1 09:43:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#ifdef _DLL
        extern template class _CRTIMP basic_istream<char,char_trait<char>>;
        extern template class _CRTIMP basic_istream<wchar_t,char_traits<wchar_t>>;
#endif //_DLL

这段程序什么意思?出自istream头文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-1 10:28:24 | 显示全部楼层
#ifdef _DLL
        extern template class _CRTIMP basic_istream<char,char_trait<char>>;
        extern template class _CRTIMP basic_istream<wchar_t,char_traits<wchar_t>>;
#endif //_DLL
这时宏定义语句,这几条语句的意思是  #ifdef 是一个条件判断 ,判断变量_DLL是否为真,如果为真,则将申明下面两个类,这两个类是全局模板类,定义在其他文件中,c++中用extern  来指明这时一个全局变量。这里指明的是一个全局类。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-1 21:11:23 | 显示全部楼层
template class 表示全局模板类的意思?后面 _CRTIMP basic_istream<char,char_trait<char>>是类名?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-1 21:37:26 | 显示全部楼层
#define _CRTIMP __declspec(dllimport)  ,CRTIMAP是调用规范,basic_istream<char,char_trait<char>>为什么是这样的格式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-1 21:43:42 | 显示全部楼层
本帖最后由 liveloo 于 2015-7-1 21:46 编辑

basic_istream<char,char_trait<char>>为什么是这样的格式?是不是 template <class T,class E>已经分别用char(T),char_trait<char>(E)实例化了?

换句话说,在动态链接库中,类模板的是:template<class T,class E>
                                                                  class basic_stream
                                                                        {
                                                                                .....
                                                                        };
                                                   如果外部声明就得用basic_stream<char,char_trait<char>这样的形式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 03:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表