gpt4 book ai didi

c++ - 如何改进对 if/else 局部变量的处理?

转载 作者:太空狗 更新时间:2023-10-29 20:44:25 31 4
gpt4 key购买 nike

我通常在代码中检测某些情况,如果存在,则处理该情况。

条件测试提取了对处理一半问题很重要的某些信息。

但是,if/else 结构不允许在 if 结构本身 (1) 中声明 local-to-the-if​​ 变量。因此,我必须在整个 if/else 链的开头之前放置变量声明,以用于可能提取信息的所有各种条件。

例如:

    else if ((EndsWithToken("d") || EndsWithToken("dsh")) &&
(p1 = find(m_input_line, '[')) &&
(p2 = find(m_input_line, ']')) &&
p2 > p1)
{
// process what we found inside of the [ ] brackets using p1 and p2...
}

此片段是 if/else 长链的一部分,其他片段不需要 p1 和 p2 - 但它们可能需要从输入流中提取的整数值,或 double 值,或两个点,或其他......

关键是,据我所知,没有办法将 const TCHAR * p1 和 p2 本地引入上述范围,这是唯一使用它的地方,仍然允许整体结构保持不变。

是否有某些 C++ 语言功能或模式可以实现这一点?


(1) 正如一些人所指出的,可以声明一个基本类型的单个变量,如果它是第一件事,并且仅针对非零值对其进行测试。这是非常有限的,无法作为解决此问题的一般解决方案(尽管偶尔会出现有用的时刻 - 但确实很少见)。

最佳答案

一个解决方案是使每个案例成为一个不同的函数,返回它是否成功。

这为变量提供了一个自然的本地化范围,并且希望(假设)一个合理的编译器可以内联它们。

关于c++ - 如何改进对 if/else 局部变量的处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292614/

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