Отступ нечетный - исправить или выбрать альтернативу

Я бегу indent с аргументами -npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1Все хорошо, кроме двух препятствий:

1) Это имеет тенденцию ставить дополнительное пространство после * в таких заявлениях, как mytype_t * my;т.е.

void my_function(my_type *ptr)

превращается в

void my_function(my_type * ptr)

2) Это ставит дополнительное пространство после & символ в выражениях типа (uint16_t *) & q->drops т.е.

stats->drops = (uint16_t *) &q->drops

превращается в

stats->drops = (uint16_t *) & q->drops

Бег indent с -nss или без -ss не решает проблему.

Есть ли способ сказать indent не делать этого? Если нет, каковы альтернативы indent?

Благодарю.

РЕШЕНИЕ

% indent -T my_type -T uint16_t

2 ответа

Решение

От man indent:

Вы должны использовать '-T' возможность указать отступ для имени всех типов названий в вашей программе, которые определены typedef. '-T' может быть указан более одного раза, и все указанные имена используются. Например, если ваша программа содержит

typedef unsigned long CODE_ADDR;
typedef enum {red, blue, green} COLOR;

вы бы использовали варианты -T CODE_ADDR -T COLOR,

Так вроде indent не знает о stdint.h типы, так что вы должны дать ему знать, что вы используете их, передав -T uint16_t -T mytype_t

После некоторых поисков я не смог найти вариант, чтобы убрать пробел между типом и указателем. Что было странно, так это то, что это происходит только тогда, когда этот тип заканчивается _t, Таким образом, это, вероятно, не отвечает на ваш вопрос. Однако хорошая альтернатива indent является astyle, Для стиля, который вы ищете, вы можете использовать эти флаги:

astyle --style=kr --indent=tab

Я действительно надеюсь, что это поможет.

Другие вопросы по тегам