GNU Indent
GNU Indent это утилита, созданная проектом GNU и позволяющая исправить и унифицировать форматирование в исходных файлах языка C. Загрузить версию для Windows вы можете отсюда, а онлайн-версию руководства по настройкам программы вы найдёте здесь.
Вот лучший набор настроек, которые мне удалось подобрать
indent -o foo.c -gnu -bli0 -hnl -nut -i4 -l130 foo.c
Если у вас есть лучшая/другая версия, напишите её ниже.
Алексей
Я потратил некоторое время для дальнейшего изучения параметров отступов, и получил следующий набор настроек (%1 – имя входного файла, %2 – имя выходного файла):
indent -o %2 -gnu -bli0 -hnl -nut -i4 -l110 -bls -ncs -npcs -nprs -nsaf -nsob -lp -cli4 -cbi0 %1
При этих отступах получаемый результат является практически идеальным, однако всё ещё имеются некоторые проблемы:
1)
do { something; } while();
А должно быть на той же строке, что и "}". (подсказка: поэксперементируйте с параметром обработки do-while, может это поможет)
2) Отступ меток на 2 пробела, выглядит так:
a = b + 3; ... MY_LABEL: free(something); return;
3) Объявления функций выглядят несколько неправильно:
NTSTATUS NTSYSAPI NtMakeSystemStable() { ...
Если вы проведёте свои исследования, то добавьте сюда полученные вами результаты или набор настроек.