私はこのようなstd
名前空間を再定義されるSTLportライブラリーと呼ばれる、使用しています:このための名前が変更された元の名前空間に戻すにはどうすればいいですか?
# if defined (_STLP_REDEFINE_STD)
/* We redefine "std" to "stlport", so that user code may use std:: transparently */
# undef std
# define std STLPORT
# else
、私はstd::something
を使用しようと、これまでの私のコードでは、それが_STLP::something
で置換されています。
#define std STLPORT
行をコメントアウトすると、レガシープロジェクトのコードはコンパイルされません(stlportに依存します)。
私が行をコメントアウトしないと、追加しようとしている新しいライブラリは、std::
とstlportが使用するものとは異なるアロケータセットを使用してコンパイルされません。タイプの衝突。
新しいライブラリを追加する直前に#define STLPORT std
を試しましたが、この#defineは機能していないようです。
std
は、このように再定義されると通常の方法を使用できますか?
# if defined (_STLP_REDEFINE_STD)
# undef std
# define std STLPORT
# else
//....
#ifdef std
#define std_WAS_DEFINED
#undef std
#endif
//new code
#ifdef std_WAS_DEFINED
#define std STLPORT
#endif
//legacy code
標準のコンテナを交換する必要はありませんが、 '-I'を使用する場合は、ソリューション内の別のプロジェクトの一部として新しいコードを保存する必要があります。私は古いコードと同じプロジェクトで新しいコードを使用することはできませんか?私はこの問題を1ヶ月間抱えていましたが、あなたの答えはそのような救済策を与えました!ありがとうございました!私が次に試してみたいのは、stlportをstdに置き換える '/ D'でした。 – Nav
私はそれほどVisual Studioに慣れていません。おそらく、最も簡単な解決策は、異なるプロジェクトに古いコードと新しいコードを残すことです。わかりません。 –