コードのフォーマットをサポートする VS 用のこの素敵な clangプラグインがあります。それは素晴らしいことですが、複雑な定義をすべて壊します:
私たちが持っていたとしましょう:
#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 などのデフォルト設定を使用してフォーマット引数を調べてみましたが、そのような残酷なコード最適化がどこに定義されているのかわかりません。