gpt4 book ai didi

c++ - 如何在Macro中用用户定义文字(UDL)组成字符串化?

转载 作者:行者123 更新时间:2023-12-02 10:23:19 27 4
gpt4 key购买 nike

如何使用文字后缀通过#identifier在MACRO中转换为文字字符串的标识符?

struct SomeType;
SomeType operator "" _udl(const char* self);

#define STRINGIFY_AS_UDL(id) /* #id _udl doesn't work */ /* How to have "id"_udl */

STRINGIFY_AS_UDL(foo) // -> "foo"_udl
STRINGIFY_AS_UDL(bar) // -> "bar"_udl
STRINGIFY_AS_UDL(42) // -> "42"_udl

最佳答案

UDL运算符也是“常规”函数,因此您可以改为调用它们:

#define STRINGIFY_AS_UDL(id) operator ""_udl(#id)

但是您可以使用 token 粘贴运算符 ##:
#define STRINGIFY_AS_UDL(id) #id ## _udl

或相邻字符串的串联:
#define STRINGIFY_AS_UDL(id) #id ""_udl

请注意,字符串的模板UDL(gcc / clang的扩展名)将需要任何串联方法:
// gcc/clang extension
template<typename Char, Char... Cs>
/*constexpr*/ SomeType operator"" _udl();

// Usage
// "some text"_udl

关于c++ - 如何在Macro中用用户定义文字(UDL)组成字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com