如何解决在C ++中使用宏的可变参量 platform.h platform_a.cc platform_b.cc main.c
我有2个平台,它们需要不同的库函数,但是我想最小化支持它们的代码。
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(..)
在两个平台之间是公共的,而无需使用预处理程序?
解决方法
这里的正常方法是将平台特定的位抽象到库中,并在它们之上进行一致的抽象。
platform.h
double Quality();
platform_a.cc
#inclue "platform.h"
double Quality() {
return getQuality();
}
platform_b.cc
#include "platform.h"
double Quality() {
return getQuality(100);
}
main.c
#include <iostream>
#include "platform.h"
int main() {
std::cout << Quality();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。