我有两个平台需要不同的库函数,但我想尽量减少支持它们所需的代码。
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();
}