Eclipse / CDT 在新行上自动缩进仅对结构不正确?

Eclipse / CDT auto-indent on new line only incorrect for structs?

使用 STM32CubeIDE 内置的新 Eclipse 和 CDT 版本。我调整了内置的格式化程序选项,并使用 clang-format 作为我的主要美化器。我在 Window >> Preferences 菜单中看到的所有地方我都缩进了 2 spaces-only。

下一行缩进对除缩进似乎加倍的结构以外的所有内容都适用。

它似乎没有两次缩进 2 个单位,因为在结构块内按 Tab 键会使我移动 4 spaces。 CTRL + SHIFT + F 的 Clang-Format 确实修复了不正确的格式,但我宁愿一个合适的解决方案。

要么是错误,要么这是 "4 space 缩进的另一个设置,但仅在结构块内"?

查看示例:

typedef struct
{

    //New lines created inside the block start here, indented at 4 and not 2

    //I get here if I press tab from the start column 

  //This is where it should intent to, manually pressed spaced twice

} some_new_t;



void foo()
{
  //Correct
}

if (something)
{
  //Correct
}

while(1)
{
  //Correct
}

#ifdef TEST
//Doesn't indent, that's fine
#endif

编辑:也适用于工会

想通了。这不是 2 个空格 vs 4 个空格的问题,而是当你只想要一个时双缩进。

出于某种原因,CDT 对 C++ 的引用比 C 多得多,而且 Java 并且这被标记为具有误导性。

WindowPreferencesC/C++Code StyleFormatter >> Edit >> Indentation > > Indent有两个选项可以勾选

'public', 'protected', 'private' within class body

Declarations relative to 'public' 'private'

对于 C 结构和联合,您只能选中其中一个以按您选择的宽度缩进。无论出于何种 non-C 原因,每个都算作包含一个缩进宽度。