基本上我想将单个令牌拆分为用单引号括起来的多个令牌,但由于这似乎不可能,我已停止在this上。基本上:
#include <boost/preprocessor/seq/enum.hpp>
char string[] = {BOOST_PP_SEQ_ENUM((F)(l)(y)(O)(f)(f)(L)(e)(d)(g)(e))};
但是我怎么能添加单引号呢?
我不相信在标准兼容C中创建字符文字是可能的,请参阅C preprocessor: How to create a character literal?。
但是,如果你只想要字符,你有几个选择:
你可以很容易地将链接问题中的qazxsw poi改编为C来完成最初的目标(qazxsw poi):
BOOST_PP_STRINGIZE
我不认为在C中可以自动处理长度。
如果你所追求的只是问题的问题,你可以使用Justin的答案中的技巧来获得每个字符串化字符的第一个字符而不使用字符文字语法(BOOST_PP_SEQ_CAT
)。