Почему не работают параметры PointerAlignment и PointerBindsToType? - PullRequest
0 голосов
/ 11 июня 2019

Я использую формат clang (version 8.0.0 (tags/google/stable/2019-01-18)) с файлом стиля, в котором я установил

…
PointerAlignment: Left
PointerBindsToType: true
…

Это преуспевает в преобразовании объявлений, подобных этой

const string &foo = "lorem ipsum";

в

const string& foo = "lorem ipsum";

Однако, когда я также включаю в свой файл стиля

BasedOnStyle: Google

опции ничего не делают. По какой-то причине они переопределяются базовым стилем. Это кажется мне бессмысленным - явные опции должны переопределять базовый стиль, нет? Может кто-нибудь объяснить, в чем проблема и как использовать BasedOnStyle и PointerBindsToType: true?

1 Ответ

1 голос
/ 11 июня 2019

Ответ в том, что стиль Google (можно проверить с помощью clang-format -style=google -dump-config | less) определяет

DerivePointerAlignment: true

В документации сказано, что это

Если true, проанализируйте отформатированный файл для наиболее распространенного выравнивания & и *. Стили выравнивания указателей и ссылок будут обновлены в соответствии с настройками, найденными в файле. PointerAlignment затем используется только как запасной вариант .

Это означает, что нужно явно установить DerivePointerAlignment: false, если вы хотите обработать его самостоятельно.

...