【发布时间】:2021-04-24 17:03:13
【问题描述】:
我正在创建一个仅标头库,并且我想检查用户是否定义了
【问题讨论】:
-
你为什么不自己
#include <string.h>?或者只是在您需要的源文件顶部转发声明void *memcpy(void *, const void *, size_t);? -
我想我只是从未听说过有人拥有根据调用者包含的内容有条件地运行的代码路径。这是您正在组合的“仅标题”库吗?
-
@selbie 是的,它只是一个库的标题,所以我的理由是我应该尽可能地保持它的简洁性。
-
有什么想法吗?只需
#include <string.h>。如果您的图书馆的用户也自己包含它,那将没有问题。 或者有没有办法只查看 memcpy 是否是一个函数? 不,不是通过预处理器。 -
除了我对仅标头库的反感之外,我不同意您的推理。这是一个过度优化。您可以做的最好的混合解决方案可能是只使用 memcpy 而不显式添加
#include <string.h>。任何包含您的库的值得他的盐的开发人员都会弄清楚如果他收到错误说 memcpy 未声明。这些都没有改变我的看法,即您过度优化并且只会使您的代码更难维护。 只需包含
标签: c macros c-preprocessor