这个宏定义是什么意思?

weiyiabout 2009-08-08 08:06:04
#define MY_SMART_PTR( CLASS_NAME ) \
typedef Loki::SmartPtr< CLASS_NAME > CLASS_NAME##Ptr; \
typedef Loki::SmartPtr< const CLASS_NAME > CLASS_NAME##ConstPtr

这种格式定义的宏,小弟还是头一回见到,麻烦大家知道指点下咯,谢谢!
...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2009-08-08
  • 打赏
  • 举报
回复
没记错的话……
MY_SMART_PTR(mc)展开就是下面两句

typedef Loki::SmartPtr < mc> mcPtr;
typedef Loki::SmartPtr < const mc> mcConstPtr

"\"表示虽然换行了,但是宏还没完……
##是用来连接字符串的^_^

C_Plus87 2009-08-08
  • 打赏
  • 举报
回复
意思是,给宏传递一个参数CLASS_NAME然后定义Loki:: SmartPtr<CLASS_NAME>的别名CLASS_NAMEPtr以及Loki::SmartPtr < const CLASS_NAME >的别名CLASS_NAMEConstPtr

比如在程序中我这样用
MY_SMART_PTR(int)于是就有Loki::SmartPtr<int>这个类型的别名intPtr和
Loki::SmartPtr<const int> 这个类型的别名intConstPtr

注意这个东西是个模版Loki::SmartPtr <>

CLASS_NAME是你传给宏的类型名

64,683

社区成员

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

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