c - 使函数在 C 中的库外部不可见
问题描述
假设我正在用 C 语言创建一个库,其中包含函数api1()、api2()和api3()。但是,这些功能非常复杂,所以我需要其他功能来制作它们。我们将这些函数称为 subfunc1()、subfunc2()和subfunc3()。我想要的是这个库的用户只能使用api1,2,3()而不是subfunc1,2,3()。我不能只将它们声明为静态,因为我想将api1,2,3()放入api.c文件,并将subfunc1,2,3()放入subfunc.c文件。
所以我的问题是:
- 除了将subfunc.c文件包含到api.c文件中并将subfunc1,2,3()声明为静态之外,还有什么方法可以实现这一点?
- 如果将subfunc.c文件包含到api.c文件中是实现此目的的唯一方法,是否推荐?它在实践中被广泛使用吗?如果不是,为什么?
解决方案
对于其他人使用您的库中的函数,他们需要一个头文件,其中包含您希望他们使用的函数的所有函数声明。
因此,只需创建一个名为的头文件[library name].h
,该文件仅包含您要公开的函数的函数声明,并将其与您的库文件捆绑在一起。
我自己并没有制作太多的库,但是从使用它们开始,通常的做法是在头文件中编写如何使用每个函数的文档,并且函数越少,读者的困惑就越少。
推荐阅读
- amazon-web-services - 如何限制 iam 角色可访问的 ssm 文档以使用标签启动自动化?
- android - 使用 RxJava (Android/Kotlin) 从可观察调用与非可观察调用返回
- html - 将 JSON 响应转换为新闻提要
- java - Eclipse Juno 不会自动更新更改(清理和重建也不起作用)
- azure-devops - 我应该使用 Releases 还是 YAML Pipelines 来部署应用程序?
- python - 在 pyspark 的 StructStreaming 中;如何将 DataFrame 中的每一行(json 格式的字符串)转换为多列
- websocket - 如何将 Play Framework 2.8 WebSocket 与 Sink 和 Source 一起使用?
- javascript - 如何在字符串中呈现变量
React Native 中的 JSX 标签 - sql - SQL如何获取最新日期并在每次发生时更新(不使用MAX)
- node.js - .get 未定义(不在 v12 Discord.js 中)