微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我看到了使用 -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 举报,一经查实,本站将立刻删除。