首页 > 解决方案 > 仅标头库的配置 (C++)

问题描述

我正在用 C++ 编写一个仅限标头的库。让事情尽可能简单,用户只需#include mylib.h

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

请不要告诉我最好的方法(甚至是标准方法),否则问题将被搁置!!!

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

标签: c++configheader-filesconfiguration-fileslib

解决方案


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

#ifndef MYLIB_XYZ
#define MYLIB_XYZ 1 // some sensible default
#endif

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

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

Windows headers中使用了类似的东西,尤其是在ATL中,它是 Microsoft 提供的仅标头库。


推荐阅读