switch语句的格式

时间:2014-02-07 23:17:41

标签: c++ visual-studio-2013 indentation

假设我的光标位置位于右侧的大括号右侧,如下所示:

enter image description here

现在,如果按Enter键,我希望它将光标自动对齐两个标签,就像break语句一样。但它的作用是:

enter image description here

它添加了一个荒谬的五个标签!知道Visual Studio有一公吨的设置,我导航到Tools::Settings::Text Editor::C/C++::Formatting::Indentation,并看到以下窗口:

enter image description here

但是,在任何组合中更改突出显示的选项实际上根本不会影响缩进!其他选项似乎都不适用于切换语句,因此我不知道该怎么做。如何在不禁用自动格式化的情况下使其缩进5个空格?

我可能会补充说,当我在大括号的末尾按Enter时,它不仅会放置5个标签,而且会发生任何自动格式化事件。因此,当我在一行的末尾添加一个分号时,即使我之前将它们取出,也会放置5个标签。

3 个答案:

答案 0 :(得分:3)

现在这可能有点晚了,但是如果其他人发现了这个问题:它似乎是一个Visual Studio错误,你可能正在运行VS2K13的新安装版本,名为REL。

http://www.microsoft.com/en-us/download/details.aspx?id=44921下载更新4对我来说很有帮助。

答案 1 :(得分:2)

大括号({})正在抛出自动压头,它会缩进大括号之外的一个标签。

在开关声明中没有非法的支持,但它们通常对你没有任何好处。除非您需要它来确定变量声明的范围,否则只需删除花括号即可。您将获得相同的代码流,并且您不会混淆自动压缩器。

修改 想想看,你可以通过简单地将支架移动到一个新线来解决这个问题。这不一定很可怕 - 它突出显示你正在使用大括号。

case SDLK_g:
    {
        // etc
        break;
    }

答案 2 :(得分:1)

我进入了VS2013并创建了一个新项目并尝试制作一个非常简单的switch,但它的格式正确,即使是花括号。你能发布那组代码吗?

我能想到的另一件事可能就是如何设置大括号,但我不知道为什么会影响它。 (我也不认为C ++确实存在这样的设置...)除此之外,你可以尝试不使用大括号,因为你在case语句中,你在技术上并不需要它们。

除了在安装过程中可能发生的事情。所以重新安装也是一种选择。

编辑:
此外,可以使用它并完成代码,然后完成后只需突出显示行并取消缩进([SHIFT] + [TAB])它们回到正确的位置。