gpt4 book ai didi

c++ - 如何定义自定义文字?

转载 作者:太空狗 更新时间:2023-10-29 23:02:55 25 4
gpt4 key购买 nike

我正在将一些源代码从一种脚本语言 (PAWN) 转换为 Windows 上的一种编程语言 (C++)。

源代码中到处都是数以百万计的二进制文字,形式如下:

data[] = 
{
0b11111111111011111110110111111110, 0b00000000001111111111111111111111,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
///some million lines later...
0b00000000000000000000000000000000, 0b11111111111111111111111110000000,
0b11100001001111111111111111111111, 0b11110111111111111111111111111111,
0b11111111111111111111111111111111, 0b11111111111111111111111111111111,

不幸的是,Visual Studio 2013 不支持用户定义的文字标准。

有什么方法可以实现这一目标吗? 010101_b 或 C++ 的东西,也许加上一点提升?

最佳答案

我强烈建议您使用脚本转换源代码。

无论如何,如果您对 Boost.PP 感兴趣:

#define FROM_BINARY(s, data, elem) sum(#elem+2)

constexpr auto sum(char const* str, std::uintmax_t val = 0) -> decltype(val)
{
return !*str? val : sum(str+1, (val << 1) + *str - '0');
}

unsigned data[]
{
BOOST_PP_TUPLE_REM_CTOR(BOOST_PP_SEQ_TO_TUPLE(
BOOST_PP_SEQ_TRANSFORM(FROM_BINARY, ,
BOOST_PP_VARIADIC_TO_SEQ(
0b11111111111011111110110111111110, 0b00000000001111111111111111111111,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
0b00000000000000000000000000000000, 0b00000000000000000000000000000000,
///some million lines later...
0b00000000000000000000000000000000, 0b11111111111111111111111110000000,
0b11100001001111111111111111111111, 0b11110111111111111111111111111111,
0b11111111111111111111111111111111, 0b11111111111111111111111111111111))))
};

请注意,这可能会大大减慢编译时间。因此,再次尝试转换一次源代码。

关于c++ - 如何定义自定义文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079707/

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