0

コードのフォーマットをサポートする 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 などのデフォルト設定を使用してフォーマット引数を調べてみましたが、そのような残酷なコード最適化がどこに定義されているのかわかりません。

4

1 に答える 1

0

これは、使用されているファイルの末尾、通常は Windows の CR+LF が原因であると言えます。ファイルを UNIX スタイルの行末 (LF) に変換してみてください。うまくいくはずです。

于 2013-09-21T23:38:18.780 に答える