Есть этот хороший лязг плагин для 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, и посмотрел на аргументы форматирования но я не вижу, где определяется такая жестокая оптимизация кода.
Я бы сказал, что это вызвано используемым окончанием файла, обычно CR + LF в Windows. Попробуйте конвертировать ваши файлы в конец строки в стиле Unix (LF), и это должно работать.
Других решений пока нет …