如何解决包含具有定义预处理器变量的不同文件
我看到了使用 -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 举报,一经查实,本站将立刻删除。