プリプロセッサの定義に基づいてオブジェクトの型を宣言したいと考えています。問題は、オブジェクト タイプが名前空間で修飾されていることです。
OldNamespace1::OldNamespace2::OldClass MyObject;
が定義されている場合__unit_test、代わりにコンパイラに表示させたい:
NewNamespace1::NewNamespace2::NewClass MyObject;
OldClass のソースはありますが、何も所有していませんOldNamespace1。明らかに#ifdef条件付きインクルードを使用してこれを実行できることはわかっていますが、これに#ifdefはコード全体で多くのものが必要になります。1つだけ(おそらく複合)でそれを行う方法はあり#defineますか?