宏问题:(看过Mordern C++ Design)的朋友求助!

lixang000 2008-10-22 06:22:04
下面是一个C++库里面代码!
。。。。。
#define TYPELIST_T1(T1) typeList<T1,NullType>
#define TYPELIST_T2(T1,T2) typeList<T1,TYPELIST_T1(T2) >
#define TYPELIST_T3(T1,T2,T3) typeList<T1,TYPELIST_T2(T2,T3) >
#define TYPELIST_T4(T1,T2,T3,T4) typeList<T1,TYPELIST_T3(T2,T3,T4) >
。。。。。。。。。。。。。。。。

我定义了一个宏如下:
#define DECLEAR_1_ELEM(T1)
typeAt<TYPELIST_T1(T1),1>::Result ELEM1;
引发如下错误:(VS2005)

d:\药品处理\药品处理\typelist.h(34) : error C2065: “T1”: 未声明的标识符
d:\药品处理\药品处理\typelist.h(34) : error C3203: “typeList”: 未专用化的类 模板 不能用作 模板 变量,该变量属于 模板 参数“TList”,应为 real 类型
d:\药品处理\药品处理\typelist.h(34) : error C2027: 使用了未定义类型“typeAt<TList,index>”
with
[
TList=int,
index=0
]
d:\药品处理\药品处理\typelist.h(34) : error C2146: 语法错误 : 缺少“;”(在标识符“ELEM1”的前面)
d:\药品处理\药品处理\typelist.h(34) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
d:\药品处理\药品处理\typelist.h(34) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
overbai 2008-10-22
  • 打赏
  • 举报
回复
#define DECLEAR_1_ELEM(T1) (typeAt <TYPELIST_T1(T1),1>::Result ELEM1)
或者
#define DECLEAR_1_ELEM(T1) \
(typeAt <TYPELIST_T1(T1),1>::Result ELEM1)
星羽 2008-10-22
  • 打赏
  • 举报
回复
Up
chlaws 2008-10-22
  • 打赏
  • 举报
回复
Up 3楼
ouyh12345 2008-10-22
  • 打赏
  • 举报
回复
宏得在一行内完成,超出请用\
帅得不敢出门 2008-10-22
  • 打赏
  • 举报
回复
#define DECLEAR_1_ELEM(T1)
typeAt <TYPELIST_T1(T1),1>::Result ELEM1;
把;号去掉呢
cunsh 2008-10-22
  • 打赏
  • 举报
回复
你定义的那个宏想要的是什么效果?

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧