问题描述
我看到了使用 -D
编译开关使用不同类的非常好的示例。
但是,在我的用例中,事情有点不同,我不知道该怎么做。
对于多路复用 API,我在 3 个不同的文件中有 3 个类:
poll.h -> class PollSelector -> generic poll() works everywhere
epoll.h -> class EPollSelector -> Linux only epoll support
kqueue.h -> class KqueueSelector -> MacOS only kqueue
所有 3 个类都有相同的方法,所以我使用:
#include "selector/poll.h"
using MySelector = PollSelector;
我在想,如果有办法可以用 -D
开关来实现,但同时,如果我添加额外的多路复用类,只能用 -D
来开关它标志,无需编辑使用它的文件。
我对其进行成像的方式是使用以下命令:
gcc -Dkqueue file.h
这会自动执行
#include "selector/kqueue.h";
using MySelector = kqueue_selector; // I will do this typedef in kqueue.h so it will compile
这是否可以以干净的方式完成,而无需在 C 预处理器中“潜水”?
这里是源的原始链接
https://github.com/nmmmnu/HM4/tree/master/net/selector
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)