gpt4 book ai didi

c++ - Visual C++ Express : fmin and fmax identifier not found?

转载 作者:太空狗 更新时间:2023-10-29 23:40:32 26 4
gpt4 key购买 nike

我在 Mac 上编译了这段代码,所以我知道没有语法错误,但是,在 VC++ Express 2010 中,我收到一条错误消息,指出找不到 fmin 和 fmax 标识符。我安装了 Windows SDK 7.1 以查看是否可以修复它,但它什么也没做:/

#include "DigitalDistortion.h"
#include "IPlug_include_in_plug_src.h"
#include "IControl.h"
#include "resource.h"

const int kNumPrograms = 1;

enum EParams
{
kThreshold = 0,
kNumParams
};

enum ELayout
{
kWidth = GUI_WIDTH,
kHeight = GUI_HEIGHT,

kThresholdX = 100,
kThresholdY = 100,
kKnobFrames = 60
};

DigitalDistortion::DigitalDistortion(IPlugInstanceInfo instanceInfo)
: IPLUG_CTOR(kNumParams, kNumPrograms, instanceInfo), mThreshold(1.)
{
TRACE;

//arguments are: name, defaultVal, minVal, maxVal, step, label
GetParam(kThreshold)->InitDouble("Threshold", 100., 0.01, 100.0, 0.01, "%");
GetParam(kThreshold)->SetShape(2.);

IGraphics* pGraphics = MakeGraphics(this, kWidth, kHeight);
pGraphics->AttachPanelBackground(&COLOR_RED);

IBitmap knob = pGraphics->LoadIBitmap(KNOB_ID, KNOB_FN, kKnobFrames);

pGraphics->AttachControl(new IKnobMultiControl(this, kThresholdX, kThresholdY, kThreshold, &knob));

AttachGraphics(pGraphics);

//MakePreset("preset 1", ... );
MakeDefaultPreset((char *) "-", kNumPrograms);
}

DigitalDistortion::~DigitalDistortion() {}

void DigitalDistortion::ProcessDoubleReplacing(
double** inputs,
double** outputs,
int nFrames)
{
// Mutex is already locked for us.

int const channelCount = 2;

for (int i = 0; i < channelCount; i++) {
double* input = inputs[i];
double* output = outputs[i];

for (int s = 0; s < nFrames; ++s, ++input, ++output) {
if(*input >= 0) {
// Make sure positive values can't go above the threshold:
*output = fmin(*input, mThreshold);
} else {
// Make sure negative values can't go below the threshold:
*output = fmax(*input, -mThreshold);
}
*output /= mThreshold;
}
}
}

void DigitalDistortion::Reset()
{
TRACE;
IMutexLock lock(this);
}

void DigitalDistortion::OnParamChange(int paramIdx)
{
IMutexLock lock(this);

switch (paramIdx)
{
case kThreshold:
mThreshold = GetParam(kThreshold)->Value() / 100.;
break;

default:
break;
}
}

最佳答案

fminfmax 是 C99 特性。 Visual Studio 只实现了 C89 标准,所以它没有那个功能。

关于c++ - Visual C++ Express : fmin and fmax identifier not found?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com