Как отформатировать этот стиль определения функции

Я хотел бы отформатировать свой код C в соответствии с определенным стилем определения функции, например:

foo.c (где "Arg" - это тип / структура)

Пример1:

void *
foo(
    const Arg *arg1 /**< my arg */
)
{
...
}

Пример2

void *
foo(
    const Arg *arg1, /**< my arg */
    const Arg *arg2  /**< my arg2 */
)
{
...
}
  1. Разрыв после типа возврата (AlwaysBreakAfterDefinitionReturnType) - это работает
  2. Разрыв после имени функции + открывающие скобки
  3. Каждый аргумент в новой строке с отступом
  4. закрывающие скобки на новой строке без отступа

Я безуспешно пробовал множество комбинаций параметров ... какие-нибудь советы?


person Tempoz    schedule 14.02.2018    source источник
comment
Что такое Arg, почему во втором примере есть два параметра с одинаковыми именами arg1 и что вы имеете в виду под стилем объявления функции?   -  person Stephan Lechner    schedule 14.02.2018
comment
Почему отрицательные голоса? Это совершенно разумный вопрос о том, как использовать инструмент для достижения определенного результата, и правильно помечен.   -  person Lee Daniel Crocker    schedule 14.02.2018
comment
@LeeDanielCrocker На самом деле это сложно понять. Важная часть вопроса находится в заголовке, а не в теле. Я проголосовал за закрытие как непонятное сначала, и мне потребовалось некоторое время, чтобы отозвать его ...   -  person Eugene Sh.    schedule 14.02.2018
comment
@StephanLechner, отредактировано, чтобы добавить пояснения. Арг - это просто тип. Под стилем я подразумеваю, что хочу отформатировать свой код, чтобы он соответствовал определенному стилю кода объявления функций. Дайте мне знать, если это ясно.   -  person Tempoz    schedule 14.02.2018
comment
@EugeneSh. Отредактировал сообщение, чтобы было понятнее, это помогает? Сообщите мне, если потребуется дополнительная информация.   -  person Tempoz    schedule 15.02.2018


Ответы (1)


Я не понимаю, как это сделать с clang-format, но indent может подойти довольно близко:

indent -i4 -cd24 -blf -bfda file.c

(кроме закрывающей пары - не знаю, как это сделать).

person Lee Daniel Crocker    schedule 14.02.2018
comment
Спасибо за ответ - person Tempoz; 16.02.2018