私は、次の達成するためにマクロを定義したいと思います:「:
は」マクロ名で許可されていないことのようですので、私はこれを行うことはできませんC++でスコープ付きの型をマクロ名として使用できますか?
#define std::vector Vector
。私がこれをしたいのは、私がStroustrupのレンジチェックベクタ(std_lib_facilities.hのプログラミング原則とプラクティス)を使用しようとしているからです。彼が使用しています:
// disgusting macro hack to get a range checked vector:
#define vector Vector
問題は、私はVector
を宣言するヘッダファイルで「using namespace std;
」を持ってしたくないということです(コメントはStoustrupのです)。つまり、他のヘッダーファイルにstd::vector
を使用する必要があり、Stroustrupの「マクロハック」が機能しません。存在しない "std::Vector
"に関するエラーが表示されます。
私の質問です: "Vector
"のようなものに置き換えるために、完全修飾型の名前をマクロ名として使用できますか?
[C++ Visual Studio "Disgusting Macro Hack"コンパイルの問題の可能性のある複製](http://stackoverflow.com/questions/19716729/c-visual-studio-disgusting-macro-hack-compilation-issue) – Raindrop7
これは本当に重複しているわけではありません。「嫌なマクロ・ハック」と別の「ベクトル」を含む別の問題です。 – freeze
トークンの間に空白を挿入できるということから分かるように、 'std :: vector'は3つのトークンです。 – MSalters