c++ - 仅标头库的配置 (C++)
问题描述
我正在用 C++ 编写一个仅限标头的库。让事情尽可能简单,用户只需#include mylib.h
在某些情况下,(高级)用户可能想要配置lib 的行为(例如错误处理、编译时或运行时检查、调试输出以及可能的其他内容)
请不要告诉我最好的方法(甚至是标准方法),否则问题将被搁置!!!
现在,我有一个文件 'config.h' 作为我的库的一部分,其中包含相关内容,#define MYLIB_XYZs
但我意识到这完全是胡说八道,因为用户需要修改库本身才能进行配置。
解决方案
您可以保持config.h
提供默认值。只需通过检查包装每个预处理器定义:
#ifndef MYLIB_XYZ
#define MYLIB_XYZ 1 // some sensible default
#endif
如果用户自己设置了定义,则将使用用户设置的值。否则,它将回退到您提供的默认值。
只是不要忘记#include <mylib/config.h>
在每个头文件中。
Windows headers中使用了类似的东西,尤其是在ATL中,它是 Microsoft 提供的仅标头库。
推荐阅读
- qt - QTreeView,当鼠标悬停在一行上时如何调用动作?
- javascript - 如何使用 JavaScript 切换 CSS 中的类?
- bash - 在用于 greping 文件的 for 循环和使用文件查询 greping 文件之间有什么更快/更好的做法?
- python - 我的代码没有打印“未找到匹配项”,为什么?
- arrays - Swift - 向字典中的数组添加值
- java - 仅从 GitHub API 返回选定的字段
- javascript - 有没有办法可以预览我的 html 文件?
- javascript - 如何使用 i18n 制作具有漂亮 URL 的网站?
- oracle-apex - ords 独立服务器的 oracle apex ssl 配置
- compilation - 如何在 Chromium 中本地执行 AVI 视频?