gpt4 book ai didi

c - 有没有办法将函数的使用限制在 C 中的库中?

转载 作者:行者123 更新时间:2023-12-04 13:05:55 24 4
gpt4 key购买 nike

所以我正在为学校项目开发静态 C 库(如 library.a 文件)。有多个函数,其中一些函数放在不同的文件中,所以我不能使用static关键字。有没有一种方法可以将这些功能限制在库本身,相当于库的 static

最佳答案

So I'm working on a static C library (like a library.a file) for a school project. There are multiple functions, some of which are placed in different files, so I can't use the static keyword. Is there a way that those functions could be limited to the library itself, an equivalent to static for libraries?

C 语言没有任何正式意义上的程序组织单元大于单个翻译单元但小于整个程序。库是语言规范的一个外来概念,基本上由所有工具链提供,但不是语言本身的一部分。 因此,不,C 语言没有定义除 static 之外的机制来声明函数标识符只能由参与程序的所有翻译单元的适当子集引用。

某些共享库格式(例如 ELF)支持此类限制,并且针对此类共享库的 C 实现通常会提供支持使用这些设施的扩展,但静态库通常并非如此。

另请注意,在所有这些情况下,我们谈论的是函数标识符链接,而不是真正控制对函数的访问。原则上,程序中的任何函数都可以通过指向它的函数指针从程序中的任何位置调用。


框架挑战:你为什么关心?

如果您不希望库客户端直接调用带有外部链接的函数,通常的做法是从库的公共(public)头文件中省略这些函数。如果某个勇敢的人可以分析库来发现并可能调用这些函数,那又有什么关系呢?您的公共(public)标题和文档告诉人们应该如何使用该库。如果人们以其他方式使用它,那就是他们的责任。

关于c - 有没有办法将函数的使用限制在 C 中的库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69516933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com