gpt4 book ai didi

c++ - 非标准 gnu 案例范围的标准替代方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:00 26 4
gpt4 key购买 nike

我有一个快速解决方法的问题,以享受非标准 gnu 的好处 case ranges .例如,非标准:

case 1 ... 5:

可以替换为:

case 1:
case 2:
case 3:
case 4:
case 5:

可能一些宏解决方案可能是有序的。根据我的内存,宏循环无法循环进行大量迭代。出于这个原因,如果范围“很大”,比如以千为单位怎么办?

最佳答案

如果您在谈论预处理器循环,我猜您正在考虑来自 boost 的预处理器元编程。虽然它可能非常便携,但循环似乎仅限于 255“迭代”。事实上,实现并不是一个真正的循环,它更像是一个硬编码的循环展开(因此是限制)。您当然可以将其扩展到更多迭代。

虽然预处理器技巧可能很诱人,但我认为您应该考虑使用 if-else if-else 结构。在现代编译器中关于条件的实际(经常)发生的是,它归结为应该生成相同代码的相同构造(除非您欺骗编译器多次评估变量)。

您甚至可以组合这些结构,使用 switch-case 结构来表示所有单独的替代方案,然后在 default 标签之后添加一个 if-else if-else 处理所有范围。

第三种解决方案是编写一个脚本来查找 case-ranges 并用标准结构替换它们,在大多数情况下这应该是相当简单的,因为 case 不能出现在许多情况下places 而不是关键字,然后它后面应该跟一个不能以这种方式包含 ... 的表达式。唯一有问题的情况(我能想到的)是 case-range 是预处理器扩展的结果。

关于c++ - 非标准 gnu 案例范围的标准替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933206/

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