2

C++ を使用して、関数がリリース モードで実行されている場合に何もしないように置き換えるマクロが必要です。したがって、デバッグ モードでは関数が実行されますが、リリース モードでは実行されません。

このようなもの:

static void foo(int,int)

#ifdef NDEBUG
#define foo(x,y)
#endif

...そして、関数本体は別の .cpp ファイルで定義されており、クラスの一部です。なぜこれが機能していないと思いますか?

実際のコード..

ヘッダ

static void ValidateInput(const SeriesID *CurrentSeries, const AEnum_TT_TICK_ROUND& roundType = TT_TICK_ROUND_NONE);

.cpp

void TTBaseTick::ValidateInput(const SeriesID *CurrentSeries, const AEnum_TT_TICK_ROUND& roundType)
{
#ifndef _DEBUG
if (!CurrentSeries)
{
  throw TTTick::Ex(TTTick::SeriesNull);
}
else if (CurrentSeries->precision <= 0)
{
    throw TTTick::Ex(TTTick::PrecisionInvalid);
}
else if(!roundType.IsValidValue(roundType))
{
    throw TTTick::Ex(TTTick::InvalidParam);
}
#endif
}
4

2 に答える 2

5
static void foo(int,int); // declaration



// Definition in your cpp file.
void foo( int x, int y )
{
#ifndef NDEBUG
    // Code for debug mode
#endif
}
于 2012-07-10T03:33:09.717 に答える
4
static void foo_(int, int);

#ifdef NDEBUG
#define foo(x,y)
#else
#define foo(x,y)   foo_(x,y)
#endif
于 2012-07-10T03:21:07.990 に答える