使用C++,我需要一个宏,如果该宏在 Release模式下运行,它将替换该函数不执行任何操作。因此,在 Debug模式下将执行该功能,但在 Release模式下将不执行该功能。
像这样:
static void foo(int,int)
#ifdef NDEBUG
#define foo(x,y)
#endif
...并且函数主体是在单独的.cpp文件中定义的,并且是类的一部分,这就是为什么我认为这不起作用?
实际代码
header
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
}
最佳答案
static void foo(int,int); // declaration
// Definition in your cpp file.
void foo( int x, int y )
{
#ifndef NDEBUG
// Code for debug mode
#endif
}
关于c++ - 如何在 Release模式下使用宏重新定义功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11406120/