Как запретить clang-формату добавлять одну точку с запятой в новую строку?
У меня есть эта строка кода на C++
while (fread(pixel_array++, sizeof(byte), 3, fp));
но когда я использую формат clang, он разделяет точку с запятой и добавляет его в новую строку
while (fread(pixel_array++, sizeof(byte), 3, fp))
;
Мне не нравится этот стиль, и я просто предпочитаю сохранить оригинальный.
Как мне изменить конфигурацию моего clang-формата? Благодарю.
2 ответа
clang-format 5.0 в настоящее время не распознает этот тип цикла. К сожалению, начиная с версии 5 в формате clang, вы не получите настройки, которая делает то, что вам нужно.
Просматривая параметры стиля формата Clang, я обнаружил, что AllowShortLoopsOnASingleLine: true
, но этот параметр не распознает условие цикла как тело цикла.
Пока формат clang не распознает циклы такого рода, я бы пометил ваш код // clang-format off
а потом // clang-format on
вокруг вашего блока кода.
По-видимому, это невозможно, но обходной путь может заключаться в замене точки с запятой пустым блоком. Если обаAllowShortLoopsOnASingleLine
а также AllowShortBlocksOnASingleLine
установлены, то он будет отформатирован как
while (fread(pixel_array++, sizeof(byte), 3, fp)) {}
fread не возвращает bool и пустой, в то время как цикл не имеет смысла. Так что было бы лучше переписать ваш код как
for(;;)
{
auto const read_bytes_count{fread(pixel_array, sizeof(byte), 3, fp)};
if((sizeof(byte) * 3) != read_bytes_count)
{
// probably deal with error handling...
break;
}
++pixel_array;
}