社区
C++ 语言
帖子详情
boost库的BOOST_PP_CAT宏怎么理解
zsxcn
2011-01-14 04:03:48
那位大侠对boost库有研究,指点一下。
我现在的需求就是仿照boost的enum方式,把相关的宏抽取出来,实现一个enum,可以根据变量的值得到枚举变量名字
例如
enum hi
{
you = 5,
me = 7,
}
当知道一个枚举变量的值是7的时候,可以得到变量的名字即me
...全文
295
1
打赏
收藏
boost库的BOOST_PP_CAT宏怎么理解
那位大侠对boost库有研究,指点一下。 我现在的需求就是仿照boost的enum方式,把相关的宏抽取出来,实现一个enum,可以根据变量的值得到枚举变量名字 例如 enum hi { you = 5, me = 7, } 当知道一个枚举变量的值是7的时候,可以得到变量的名字即me
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zheyimiao
2011-01-14
打赏
举报
回复
可以用map,宏的话不太清楚,会不会这个库通过宏的形式也是对应有个map?等待高手解答
BOOST
_
PP
_
CAT
宏
BOOST
_
PP
_
CAT
宏
主要用来连接两个标识符。此
宏
被其它地方用到。 头文件
boost
\preprocessor\
cat
.h
pp
# define
BOOST
_
PP
_
CAT
(a, b)
BOOST
_
PP
_
CAT
_I(a, b) # define
BOOST
_
PP
_
CAT
_I(a, b)
BOOST
_
PP
_
CAT
_II(~, a ## b) # define
BOOST
_
BOOST
_
PP
_
CAT
宏
Boost
_
pp
_
cat
宏
将其参数连接在展开后。 使用
BOOST
_
PP
_
CAT
(a、b)) 参数 a 连接的左操作数。 B 连接的右操作数。 备注 预处理器的 token-pasting 操作符(##) 会阻止参数进行展开。本
宏
则允许其参数在连接之前先进行展开。 连接的结果不可以引起对一个使用了
BOOST
_
PP
_
CAT
的
宏
的调用。如果发生,则BOOS...
BOOST
_
PP
_
CAT
/
BOOST
_
PP
_SEQ_
CAT
/
BOOST
_
PP
_SEQ_SIZE /
BOOST
_
PP
_SEQ_HEAD /
BOOST
_
PP
_LESS_EQUAL
BOOST
的预处理十分复杂。真是非常难以理清楚。下面的内容只能算作笔记,避免忘记了。 也只有自己能看明白了。 // push_back_.c
pp
: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #define seq (a) (b) (c) int _tmain(int argc, _TCHAR* argv...
学习代码段重复
宏
:
BOOST
_
PP
_ENUM_PARAMS
需求场景 有些时候,我们想要写一段有固定规律代码,如下 int a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19; 解决方案 包含
BOOST
的
PP
库
,使用
BOOST
_
PP
_ENUM_PARAMS
宏
int
BOOST
_
PP
_ENUM_PARAMS(20, a); 背后原理 通过学习
BOOST
_
PP
_ENUM_PARAMS
宏
的实现,加深我们对
类如
BOOST
_
PP
_
CAT
等含有##、#的
宏
,需要一个中间
宏
的原因
在
BOOST
中有个
BOOST
_
PP
_
CAT
的
宏
定义: #define
BOOST
_
PP
_
CAT
(a, b)
BOOST
_
PP
_
CAT
_I(a, b) #define
BOOST
_
PP
_
CAT
_I(a, b)
BOOST
_
PP
_
CAT
_II(~, a##b) #define
BOOST
_
PP
_
CAT
_II(p, res) res 相当于:#define M(a, ...
C++ 语言
65,184
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章