我希望能够编写以下代码:
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::vector
或std::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