По причинам, не зависящим от меня, я должен использовать стиль программирования C с этой обработкой {
и }
if (lisa())
{
while (mary())
{
john();
anna();
}
}
else if (bart())
{
do
{
jack();
}
while (paul());
}
То есть
{
и }
(я не нахожу этого ни в одном из стандартных стилей).{
и }
, разделяющие блок кода, — это одиночные непробельные символы в строке (возможно, за исключением комментариев){
и }
применяются после for (…)
, do
, while (…)
, если они не соответствуют более ранним do
, if (…)
и else
, за исключением случаев, когда сразу за ними следует if
.Какие широко поддерживаемые атрибуты я должен добавить/изменить в моем минимальном файле .clang-format
, чтобы получить такое поведение?
---
BasedOnStyle: Microsoft
ColumnLimit: '120'
TabWidth: '4'
UseTab: Never
...
Я думал, что висячие отступы перестали считаться крутыми где-то в конце 90-х. Тот, кто отвечает за соблюдение этого стиля кодирования, должен знать, что будет меньше производительности и больше ошибок. На самом деле я не могу прочитать этот код, не занимаясь умственной гимнастикой.
BreakBeforeBraces: Whitesmiths
почти готово, но } while (paul());
работает с новой строкой.
@KamilCuk: я пытался GNU
, но брекеты стоят только наполовину, это неприемлемо. Но BreakBeforeBraces: Whitesmiths
достаточно близок к 1 и 2, в том числе для } while (paul());
, если я заставлю себя вставить //
и новую строку перед while
. Теперь, если мы можем добавить еще какое-нибудь заклинание для 3...
Я пытался создать пользовательское поведение, то есть BreakBeforeBraces: Custom
в соответствии с вашими потребностями, но я совершенно уверен, что это недостижимо с clang-format-14 (ни с clang-format-16 на основе документации, которую я постоянно используя как справочную таблицу).
Если он настроен на использование: BreakBeforeBraces: Whitesmiths
код выглядит почти идентично вашим потребностям, как написал Камил в комментариях, но в то время как в do-while не на новой строке.
Если он настроен на использование: BreakBeforeBraces: GNU
появляется на новой строке, но есть множество других проблем. например код не выровнен по горизонтали с фигурными скобками.
Кажется, самое близкое, что вы можете получить, это использовать эти параметры в файле .clang-format
:
Language: Cpp
BreakBeforeBraces: Whitesmiths
IndentWidth: 4
UseTab: Never
For reasons beyond my control,
Вы оправданы, но я надеюсь, что вы пожаловались ответственному лицу. Вы рассматривали отступ GNU?