我有一个名为api.h
的头文件,其中包含我的库的公共函数。我希望仅当用户使用void func_xxx();
启用函数api.h
时,才会在./configure --enable-xxx
中声明该函数。这可能吗?理想情况下,我不想使用#ifdef
吗?我知道如何在我的--enable-xxx
脚本中实现configure.ac
标志,但如果使用api.h
,我不知道如何将函数声明添加到--enable-xxx
。
感谢您的帮助
答案 0 :(得分:1)
您想要实现的并不是一种好的做法,因为正如您所提到的,您需要#if
预处理器宏,将config.h
拖到公共接口,因此必须安装它。配置文件不是要安装的。
我建议你在运行时这样做,这是建议在像API design for C++这样的书中练习,顺便说一句,这是一个非常推荐的阅读:
bool isFuncXXXEnabled();
void funcxxx();
您的代码:
if (isFuncXXXEnabled()) {
}
else {
}
在.cpp文件中,您可以禁用函数体,因为`config.h不会在公共接口中公开。