调用两个函数的方法(一个stdcall)

时间:2016-12-20 16:40:41

标签: c++

我有两个功能来创建一个哔声。一个调用标准蜂鸣声功能,另一个使用库直接写入端口。我试图找到一种灵活的方式来选择基于变量调用哪个函数。

标准蜂鸣声功能定义为

BOOL stdcall Beep(
  _In_ DWORD dwFreq,
  _In_ DWORD dwDuration
);

我的职能是:

void NewBeep(
   unsigned int freq, 
   int ms
);

目前我只有两个几乎相同的功能,但调用正确的代码。

1 个答案:

答案 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
}