clang格式多行数组初始化程序



我希望能够编写以下代码:

float positions[] =
{
-0.5f, -0.5f,
0.5f, -0.5f,
0.5f,  0.5f,
-0.5f,  0.5f
};

然而clang格式将初始化程序的格式设置为在一行上。

我找不到允许它们在一行或多行上的设置,如上所述。这个问题类似,但并不能解决我的问题,因为它假设引擎允许多行初始化。

我错过了什么场景?我已经浏览了各种选项,但似乎找不到。

从格式化程序的角度来看,您的安排没有任何意义。您有一个初始值设定项列表,并要求格式化程序每行将其排列为两个元素。但是初始值设定项列表没有语义,根本没有任何东西可以远程表明其元素是成对相关的。

如果你的元素应该被分成两组,那么很可能你实际上需要";组";它们的结构是合理的。这不仅是为了格式化,而且首先也是为了代码的健全性。例如:

struct Point { float x; float y; };
Point positions[] =
{
{-0.5f, -0.5f},
{0.5f, -0.5f},
{0.5f,  0.5f},
{-0.5f,  0.5f}
};

此外,我强烈建议停止使用C数组。使用std::vectorstd::array:

struct Point { float x; float y; };
std::array<Point, 4> positions =
{{
{-0.5f, -0.5f},
{0.5f, -0.5f},
{0.5f,  0.5f},
{-0.5f,  0.5f}
}};

这可以通过在clang-format off/on注释中包装代码来解决。clang格式在一行中格式化,但如果你想暂时禁用clang格式,你可以使用:

// clang-format off
float positions[] =
{
-0.5f, -0.5f,
0.5f, -0.5f,
0.5f,  0.5f,
-0.5f,  0.5f
};
// clang-format on

最新更新