将其唯一参数扩展为其组成字符的宏
Macro that expands its only argument into its component characters
是否可以在 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">
但字符串文字不会自动转换为字符...序列。
没有。 C 预处理器不提供此功能。
根据您的用例,字符串可能是等效的(空字节除外),因此 stringifying 也可能有效。
您可以看看 m4,K&R 提供的更高级的预处理器。也许它提供了您需要的功能。
是否可以在 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">
但字符串文字不会自动转换为字符...序列。
没有。 C 预处理器不提供此功能。
根据您的用例,字符串可能是等效的(空字节除外),因此 stringifying 也可能有效。
您可以看看 m4,K&R 提供的更高级的预处理器。也许它提供了您需要的功能。