gpt4 book ai didi

c - 仅在 C 中公开必需的函数

转载 作者:太空狗 更新时间:2023-10-29 15:14:09 27 4
gpt4 key购买 nike

我正在用 C 编写一个小型 API 库类模块。我将编译这个模块并将其提供给我的开发人员,我将在模块的头文件中公开一些必需的函数,以便使用我的模块的开发人员知道哪些函数来调用所需的功能。现在我想问一件事:我可以只在 C 中公开所需的功能吗?例如

我有 test.c 有:

#include "test.h"
void A()
{
if( some condition is true )
B();
else
return;
}

void B()
{
//some code here
}

在 test.h 中,我只公开了一个函数,即

void A();

现在 B() 显然依赖于 A() 中的条件,否则它无法运行,因为只有 A() 暴露在 test.h 中,所以用户不知道他/她也可以直接调用 B() .现在我担心的是,如果用户知道(或猜测)我的模块中有一些名为 B() 的函数可以绕过 A() 直接调用,那么它可能会危及我的实现。

我知道在这种情况下 C++ 会更好,因为有公共(public)和私有(private)方法,我也有一个想法,我可以通过在 B() 中使用 A() 的一些标志检查来防止 B() 被直接调用,但我想知道是否有任何其他方法,以便用户无法调用我的函数(如 B()),这些函数未在头文件中公开。

最佳答案

制作函数B:

static void B(void)
{
//some code here
}

它的可见性将仅限于定义它的翻译单元。 B 会有内部链接; A 将具有外部链接。

关于c - 仅在 C 中公开必需的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174078/

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