带单引号的BOOST_PP_SEQ_ENUM?

问题描述 投票:0回答:2

基本上我想将单个令牌拆分为用单引号括起来的多个令牌,但由于这似乎不可能,我已停止在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 boost macros preprocessor boost-preprocessor
2个回答
2
投票

我不相信在标准兼容C中创建字符文字是可能的,请参阅C preprocessor: How to create a character literal?

但是,如果你只想要字符,你有几个选择:

  • 您可以使用qazxsw poi和qazxsw poi将其扩展为字符串文字: qazxsw poi qazxsw poi
  • 你可以将每个角色扩展为qazxsw poi: qazxsw poi qazxsw poi

1
投票

你可以很容易地将链接问题中的qazxsw poi改编为C来完成最初的目标(qazxsw poi):

BOOST_PP_STRINGIZE

我不认为在C中可以自动处理长度。

如果你所追求的只是问题的问题,你可以使用Justin的答案中的技巧来获得每个字符串化字符的第一个字符而不使用字符文字语法(BOOST_PP_SEQ_CAT)。

© www.soinside.com 2019 - 2024. All rights reserved.