使 GNU 缩进正确处理结构文字

Koz*_*oss 5 c gnu indentation

当我尝试在这段代码上使用 GNU 缩进时:

tree_node_s *t = GC_MALLOC_ATOMIC (sizeof (tree_node_s));
*t = (tree_node_s){.val = n,.h = 0};
Run Code Online (Sandbox Code Playgroud)

我明白了:

tree_node_s *t = GC_MALLOC_ATOMIC (sizeof (tree_node_s));
*t = (tree_node_s)
  {
  .val = n,.h = 0};
Run Code Online (Sandbox Code Playgroud)

显然,这看起来非常糟糕,而且显然不是一个结构体文字。我仅将默认选项传递给 GNU 缩进(意味着 GNU 风格)。我是否可以传递一个选项,让它以一种不会看起来那么可怕的方式处理这种情况?

use*_*249 -1

如果“tree_node_s”不仅仅是一个内在变量(如 int、char 等),那么发布的代码将无法正常工作

这是因为从结构分配结构仅在创建接收结构时才有效。在发布的代码中,接收结构已经创建,因此不会执行正确的分配。

建议:

t->val = n;
t->h = 0;
Run Code Online (Sandbox Code Playgroud)

也许不太优雅,但非常可靠。