Что делает "Сила" в Uncrustify?
Многие опции включают параметр значения Force
:
Добавить или удалить пробел между вложенными parens
sp_paren_paren
{Ignore
, Add
, Remove
, Force
}
Что это значит? Чем он отличается от Add
?
Ответы
Ответ 1
Добавить означает "добавить, если он еще не присутствует", что означает, что если что-то уже существует, оставьте его (и только форматирование). Сила означает добавить, если нет, и переформатировать, если она присутствует:
// Original
if (cond) {
func();
}
// Add curly braces (already present, leaves formatting alone)
if (cond) {
func();
}
// Force curly braces
if (cond) {
func();
}
Или другой пример:
// Original
if (cond)
func();
// Add curly braces
if (cond) {
func();
}
// Force curly braces (behaves just like add in this case)
if (cond) {
func();
}
Ответ 2
Add
добавляет, если его нет.
Remove
удаляется, если он есть.
Force
делает a Remove
, тогда a Add
.
Ответ 3
Как "Добавить или удалить X между A и B"
Add
: добавляет только X, когда не появляется X
AB -> AXB
AXB -> AXB
AXXB -> AXXB
Remove
: удаляет все появившиеся X
AB -> AB
AXB -> AB
AXXB -> AB
Force
: как edwinc сказал Remove
, то Add
→ Удаляет все (любые) X первые и добавляет X наконец
AB -> AXB
AXB -> AB -> AXB
AXXB -> AB -> AXB
Но иногда "добавить X" можно определить как добавить некоторое число X в другое место, поэтому Force
понравится "переформатировать", как сказал Крис.