仅头文件库的配置 (C++)

old*_*987 1 c++ config configuration-files header-files lib

我正在用 C++ 编写一个仅包含头文件的库。使事情尽可能简单,用户只需#include mylib.h

在某些情况下,(高级)用户可能想要配置库的行为(例如错误处理、编译时或运行时检查、调试输出以及可能的其他内容)

请不要告诉我执行此操作的最佳方法(甚至标准方法),因为否则问题将被搁置!

现在,我有一个文件“config.h”作为我的库的一部分,其中包含相关内容,#define MYLIB_XYZs但我意识到这完全是无稽之谈,因为用户需要修改库本身才能进行配置。

iva*_*lev 5

您可以保留config.h提供的默认值。只需通过检查包装每个预处理器定义即可:

#ifndef MYLIB_XYZ
#define MYLIB_XYZ 1 // some sensible default
#endif
Run Code Online (Sandbox Code Playgroud)

如果用户自己设置了定义,则将使用用户设置的值。否则,它将回退到您提供的默认值。

只是不要忘记#include <mylib/config.h>在每个头文件中。

类似的东西在Windows 标头中使用,最引人注目的是在ATL中,它是 Microsoft 提供的仅标头库。