包含具有定义预处理器变量的不同文件

问题描述

我看到了使用 -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 (将#修改为@)