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