6

C++ コードを使用して、Visual Studio 2010 で作業しています。私がやろうとしているのは、実行時にプリプロセッサ ディレクティブの値を変更することです。可能かどうかはわかりませんが、これを試してみました..

somefile.h

static int mValue = 0;
#define POO = mValue;
...

#if POO 0
//define class methods
#else
//define class methods differently
}

main.cpp

main()
{

//Code calls constructor and methods allowed when POO is 0

//Code increments mValue

//Code calls constructor and methods allowed when POO is 1


}

クラスオブジェクトが他のメソッドの異なる実装を使用するように、POO をどのように変更できますか? または、それが不可能な場合、これに対する別のアプローチは何ですか?

4

1 に答える 1

8

「プリプロセッサ」ディレクティブの性質について混乱しているようです。これらは、コンパイラ処理の前にのみ存在します。コンパイラは、コンパイル ステップ中にマクロ定義を削除 (置換/処理) します。実行時に変更する必要はありません。これは実際には、それ自体が c/c++ コードにコンパイルされるだけのミニ言語であり、その後コンパイラによって処理されます。

ある種のランタイム入力に基づいて、クラスを 2 つの異なるものにしたいようです。これは、設計上の問題を示している可能性があります。2 つの異なるクラスを定義することを検討することもできます (おそらく共通の自明な基本クラスを使用して)。

于 2013-10-25T04:03:35.220 に答える