C++ には、次のようなマクロがあります。
#ifdef DEBUG
#define dbgAssert(condition, message)/
if(!(condition)){ implementation.Assert(message); }
#else
#define dbgAssert(condition, message)
#endif
このアプローチは、特に一部の条件が CPU に特に負荷をかける可能性がある場合に、デバッグ モードでない場合は条件がテストされないため、効率的です。
このタイプのワンライナーをHaxeに実装する方法はありますか?
これは非常に単純な例です。(複数のパラメーターに応じて) 多数の条件定義を持つマクロがいくつかあるため、冗長な再定義をあちこちで効率的に維持することはできません。
これは、常に最も単純な条件をテストし、レベルに応じてより重いテストを追加できる、もう少し興味深いシステムです。
#if 4 == ASSERT4LEVEL
#define lvlAssert4(conditionlvl1, conditionlvl2, conditionlvl3, conditionlvl4, message)/
myAssert((conditionlvl1) && (conditionlvl2) && (conditionlvl3) && (conditionlvl4), message)
#elif 3 == ASSERT4LEVEL
#define lvlAssert4(conditionlvl1, conditionlvl2, conditionlvl3, conditionlvl4, message)/
myAssert((conditionlvl1) && (conditionlvl2) && (conditionlvl3), message)
#elif 2 == ASSERT4LEVEL
#define lvlAssert4(conditionlvl1, conditionlvl2, conditionlvl3, conditionlvl4, message)/
myAssert((conditionlvl1) && (conditionlvl2), message)
#else
#define lvlAssert4(conditionlvl1, conditionlvl2, conditionlvl3, conditionlvl4, message)/
myAssert((conditionlvl1), message)
#endif
条件を実行せずにこの動作を再現するにはどうすればよいですか?