Разрыв утилиты форматирования кода clang определяется только в Windows?

Есть этот хороший лязг плагин для VS, который поддерживает форматирование кода. Это хорошо, но это ломает все сложные определения:

Скажем, у нас было:

#include <boost/preprocessor.hpp>
#include <boost/shared_ptr.hpp>

#define NM_PP_VARIADIC_MAX_LENGTH 5

#define NM_PP_TYPE_DECL(z, n, T) \
class BOOST_PP_CAT(T, n )

#define NM_PP_TYPE(z, n, T) \
BOOST_PP_CAT(T, n )

#define NM_PP_ARGUMENT_DECL(z, n, T) \
BOOST_PP_CAT(T, n ) BOOST_PP_CAT(t, n )

Вот что мы получаем после форматирования:

#include <boost/preprocessor.hpp>
#include <boost/shared_ptr.hpp>

#define NM_PP_VARIADIC_MAX_LENGTH 5

#define NM_PP_TYPE_DECL(z, n, T) \
class BOOST_PP_CAT(T, n)

#define NM_PP_TYPE(z, n, T)
BOOST_PP_CAT(T, n)

#define NM_PP_ARGUMENT_DECL(z, n, T)
BOOST_PP_CAT(T, n) BOOST_PP_CAT(t, n)

Как видите, такой код не скомпилируется и большинство \ удалены. Есть ли способ настроить его, чтобы не удалить \?

Я попытался использовать конфигурации по умолчанию, такие как LLVM, и посмотрел на аргументы форматирования но я не вижу, где определяется такая жестокая оптимизация кода.

0

Решение

Я бы сказал, что это вызвано используемым окончанием файла, обычно CR + LF в Windows. Попробуйте конвертировать ваши файлы в конец строки в стиле Unix (LF), и это должно работать.

0

Другие решения

Других решений пока нет …