【发布时间】:2016-02-10 14:06:39
【问题描述】:
是否可以在 C/C++ 预处理器中编写一个宏,将其单个参数扩展为由它组成的组件字符
例如
EXPAND( abcd )
将扩展为
'a', 'b', 'c', 'd'
其他例子是
EXPAND( 1 )
'1'
EXPAND( 12 )
'1', '2'
EXPAND( func_name )
'f', 'u', 'n', 'c', '_', 'n', 'a', 'm', 'e'
编辑:
目的是将字符序列作为参数传递给如下模板
template<char... args>
struct Struct {
...
};
不必编写繁琐的代码
Struct<'a', 'b', 'c'>
一个人会做
Struct<EXPAND( abc )>
最好能写代码
Struct<"abc">
但字符串文字不会自动转换为 char... 序列。
【问题讨论】:
-
没有。恕我直言,最好避免使用宏
-
这样的宏有什么用途?这只会使代码更难理解。
-
我添加了对目的的解释作为编辑。
-
您可能想分享更多关于这个模板的想法。也许这个想法从根本上被打破了,另一种方法可以消除您所要求的要求。
标签: c++ macros c-preprocessor