Подтвердить что ты не робот

Отступные препроцессорные директивы с clang-format

Я работаю над проектом С++, где я использую много #pragma omp. Я использую прекрасный стиль clang для аккуратности, но он всегда удаляет отступы для всех директив препроцессора. Есть ли способ изменить это поведение? Или есть другой инструмент форматирования, который более рекомендуется? Или я должен избегать использования этих инструментов вообще?

4b9b3361

Ответ 1

Возможно, вам захочется просто исправить его и сделать запрос на растяжение.

Это не так сложно, я сделал один и тот же мирский запрос на растяжение. Код clang-format довольно аккуратный. Clang-format уже обрабатывает комментарии кодов так, как вы хотите, выравнивая их с окружающим кодом (по крайней мере, у него есть возможность включить это), поэтому создание патча для обработки некоторых директив PP одинаковым образом должно быть простым.

В качестве альтернативы вы можете просто написать патч самостоятельно и скомпилировать себя из источника с дополнительным вариантом для использования в вашем проекте. Я также сделал это, прежде чем я решил отправить им патч.

Серьезно мне потребовалось всего несколько часов, чтобы понять, как это сделать, их код намного чище, чем код многих других проектов с открытым исходным кодом.

Ответ 2

Было уже поздно, но это решение, которое вы ищете. Он форматирует прагму вместе с блоком кода. Вы можете использовать это, прежде чем, наконец, поддержите отступ прагмы.

https://github.com/MedicineYeh/p-clang-format

Основная концепция заключается в замене строки так, чтобы форматтер использовал "правильные" правила для этих прагм. Мотивационный пример следующий.

# Replace "#pragma omp" by "//#pragma omp"
sed -i 's/#pragma omp/\/\/#pragma omp/g' ./main.c
# Do format
clang-format ./main.c
# Replace "// *#pragma omp" by "#pragma omp"
sed -i 's/\/\/ *#pragma omp/#pragma omp/g' ./main.c