在C++中使用宏的可变参数



我有两个平台需要不同的库函数,但我想尽量减少支持它们所需的代码。

C++14代码:

#ifdef PLATFORM2
#define FUNCTION_AUTO unsigned int dmd
#else
#define FUNCTION_AUTO void
#endif
//-- WITHIN THE LIBRARY -- //
double getQuality(FUNCTION_AUTO){
//Computing
// return value;
}
//-- MAIN EXECUTABLE -- //
int main() {
std::cout << "Hello World!n";
#ifdef PLATFORM2
getQuality(100);
#else
getQuality();
#endif
}

有没有更好的方法可以在不使用预处理器操作的情况下将getQuality(..)定义为两个平台之间的通用?

这里的正常方法是将特定于平台的位抽象到库中,并在其上进行一致的抽象。

平台.h

double Quality();

平台_a.cc

#inclue "platform.h"
double Quality() {
return getQuality();
}

平台_b.cc

#include "platform.h"
double Quality() {
return getQuality(100);
}

main.c

#include <iostream>
#include "platform.h"
int main() {
std::cout << Quality();
}

相关内容

  • 没有找到相关文章

最新更新