gpt4 book ai didi

c - 如何在源代码中正确定位不平衡的括号?

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:13 25 4
gpt4 key购买 nike

最近了解到一些文本编辑器有检查文件中所有括号是否平衡的功能。 (例如 Emacs 中的 check-parens)。如果有的话,它甚至可以突出显示第一个不平衡的括号。但是我不清楚是否有一种方法可以正确定位它而不是总是突出显示第一个不平衡事件。

考虑下面的代码:

void foo()
{
int some_num0 = 0;
{
int some_num1 = 1;
{
int some_num2 = 2;
{
int some_num3 = 3;
//ops I forgot to close this block.
}
}
}

一个简单的余额检查(例如 Emacs 中的 check-parens)将把我带到 foo 定义的左括号。然而,更合理的指示应该将我带到最内层附近的某个地方,即 some_num3 附近的那个。有办法实现吗?

最佳答案

括号检查基本上是读取代码并在遇到括号时更新计数器。如果是左括号,则加 1 ;如果它是一个关闭的,它会添加 -1(减去 1)。如果计数器达到负数,则说明存在问题,它会告诉您。如果在代码末尾,计数器不为零,也有问题;这就是你的情况。

但是您希望它如何知道丢失的大括号实际在哪里?做一些接近你想要的事情的唯一方法是也检查缩进。但是,如果您的代码没有正确缩进怎么办?

我不知道有什么工具可以在检查大括号时检查缩进,我怀疑是否有一个好的工具(如果有的话)。

事实是,您越是忘记括号,最重要的是,您编写的代码越多,您就越记得不要忘记这些括号。或者至少,它很可能会发生。

所以,不要怪你的IDE没有理智,而要怪你没有立即定位缺失的括号。并编写代码。

关于c - 如何在源代码中正确定位不平衡的括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388774/

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