相关疑难解决方法(0)

C++中不必要的花括号?

今天为同事做代码审查时,我看到了一件奇怪的事情.他用这样的花括号包围了他的新代码:

Constructor::Constructor()
{
   existing code

   {
      New code: do some new fancy stuff here
   }

   existing code
}
Run Code Online (Sandbox Code Playgroud)

如果有的话,结果是什么?这可能是什么原因?这种习惯来自哪里?

编辑:

根据输入和下面的一些问题,我觉得我必须在问题上添加一些,即使我已经标记了答案.

环境是嵌入式设备.C++服装中包含许多遗留的C代码.有很多C转向C++开发人员.

这部分代码中没有关键部分.我只在代码的这一部分中看到过它.没有完成主要的内存分配,只是设置了一些标志,而且有点笨拙.

大括号包围的代码类似于:

{
   bool isInit;
   (void)isStillInInitMode(&isInit);
   if (isInit) {
     return isInit;
   }
}
Run Code Online (Sandbox Code Playgroud)

(不要介意代码,只需坚持花括号......;))花括号之后还有一些比特麻烦,状态检查和基本信号.

我与那个人谈过,他的动机是限制变量的范围,命名冲突,以及其他一些我无法真正接受的冲突.

从我的POV看起来相当奇怪,我不认为花括号应该在我们的代码中.我在所有答案中都看到了一些很好的例子,说明为什么用花括号包围代码,但是你不应该把代码分成方法吗?

c++ code-formatting

175
推荐指数
12
解决办法
3万
查看次数

C风格语言中匿名{}块的目的是什么?

C风格语言中的匿名{}块的目的是什么(C,C++,C#)

示例 -



void function()
{

  {
    int i = 0;
    i = i + 1;
  }

  {
    int k = 0;
    k = k + 1;
  }

}

Run Code Online (Sandbox Code Playgroud)

编辑 - 感谢所有优秀的答案!

c c# c++

37
推荐指数
8
解决办法
5503
查看次数

C#中匿名未附加块的价值是多少?

在C#中,您可以在未附加到任何其他语句的方法中创建块.

    public void TestMethod()
    {
        {
            string x = "test";
            string y = x;

            {
                int z = 42;
                int zz = z;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

此代码编译并运行,就像主方法中的大括号不存在一样.还要注意块内部的块.

有没有这种情况有价值?我还没有找到,但我很想知道其他人的发现.

c#

10
推荐指数
1
解决办法
652
查看次数

标签 统计

c# ×2

c++ ×2

c ×1

code-formatting ×1