幾何学ベースのコードで作業しています。現在の課題には、固体試料を収容するためのバウンディングボックスの使用が含まれる。さて、コードでは、私はそのようなボックスの2つの異なるタイプ、すなわちINNER_BOUNDING_BOX
とOUTER_BOUNDING_BOX
を考案しました。このコードでは、2つのボックスのいずれか1つの使用を想定していますが、両方を使用することはありません。私はプリプロセッサの使用によってそれを達成しようとしています。 私は、2つのマクロ、すなわちUSE_INNER_BOUNDING_BOX
とUSE_OUTER_BOUNDING_BOX
に基づいてさらにコードを書いています。私はいつでもいずれかのマクロはこのようにいくつかの単純な構造によって定義されていることを確認することができます:私は、任意の特定のボックスを使用したい場合デフォルトをエミュレートするための条件付きマクロ定義
#if defined(USE_INNER_BOUNDING_BOX) && defined(USE_OUTER_BOUNDING_BOX)
#undef USE_INNER_BOUNDING_BOX
#undef USE_OUTER_BOUNDING_BOX
#define USE_INNER_BOUNDING_BOX
#endif
#ifndef USE_INNER_BOUNDING_BOX
#ifndef USE_OUTER_BOUNDING_BOX
#define USE_INNER_BOUNDING_BOX
#endif
#endif
は今、私はちょうど対応するマクロを定義することができます。難しかったのは、デフォルト設定マクロsay USE_DEFAULT_BOUNDING_BOX
を使いたいということでした。それで、どちらも明示的に定義されていない場合にはUSE_INNER_BOUNDING_BOX
またはUSE_OUTER_BOUNDING_BOX
のいずれかの定義を設定することができました。 私は移植可能なコードに傾いているだろうが、コンパイラ固有のトリックも渡すことができます。私はVisual Studio 2012
を使用しています。
本当にあなたが聞いた質問に対する答えはありませんが、単一のスイッチ 'BOUNDING_BOX_TO_USE'を' INNER == 1' 'OUTER == 2'と定義するのはなぜですか?そうすれば、それは本質的に両方ではない可能性があります。 – Yunnosch
私は同様の行に何かを書くことができました。その時私には打撃を与えませんでした。 :)私は別の方法でそれを実装しようとします。しかし、それはまだ偶然の質問であり、それは楽しいので、私は尋ねた。 :) – user2338150
これらのマクロブロックは、あなたが望むものをすでに実行しています。しかしそれはもっと短くてもよい。 – VTT