我有两个功能来创建一个哔声。一个调用标准蜂鸣声功能,另一个使用库直接写入端口。我试图找到一种灵活的方式来选择基于变量调用哪个函数。
标准蜂鸣声功能定义为
BOOL stdcall Beep(
_In_ DWORD dwFreq,
_In_ DWORD dwDuration
);
我的职能是:
void NewBeep(
unsigned int freq,
int ms
);
目前我只有两个几乎相同的功能,但调用正确的代码。
答案 0 :(得分:3)
你可以像这样制作一个包装函数:
BOOL BeepWrapper (int freq, int ms) {
BOOL useStdFct = FALSE;
if (useStdFct) {
Beep (freq, ms);
} else {
NewBeep (freq, ms);
}
}
您可以将其设置为预处理器定义,以便不对所使用的内容进行硬编码
其他选项是使用默认参数,因此您只需给出另一个参数即可在代码中更改它。像这样:
BOOL BeepWrapper (int freq, int ms, BOOL useStdFct = FALSE) {
if (useStdFct) {
Beep (freq, ms);
} else {
NewBeep (freq, ms);
}
}
使用预处理器定义:
//Somewhere in code
#define USE_STD_FCT FALSE
//or in your compiler config
// -DUSE_STD_FCT=FALSE
BOOL BeepWrapper (int freq, int ms) {
#ifdef USE_STD_FCT FALSE
Beep (freq, ms);
#else
NewBeep (freq, ms);
#endif
}