gpt4 book ai didi

c - 如何在 C 中实现 "private/restricted"函数?

转载 作者:太空狗 更新时间:2023-10-29 16:23:12 26 4
gpt4 key购买 nike

我在一次 C 面试中被问到一个非常有趣的问题:如何实现函数 f() 使其只能从特定的 g() 函数调用。如果 g() 以外的函数尝试调用 f(),则会导致编译器错误。

起初,我认为这可以通过函数指针来完成,而且我可以接近于在运行时阻止调用。但是我想不出编译时策略。我什至不知道使用 ansi C 是否可行。

有人知道吗?

最佳答案

这是一种方法:

int f_real_name(void)
{
...
}

#define f f_real_name
int g(void)
{
// call f()
}
#undef f

// calling f() now won't work

另一种方式,如果你能保证 f()g() 是文件中唯一的函数,就是声明 f() 作为 static

编辑:另一个导致编译器错误的宏技巧:

static int f(void) // static works for other files
{
...
}

int g(void)
{
// call f()
}
#define f call function

// f() certainly produces compiler errors here

关于c - 如何在 C 中实现 "private/restricted"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401781/

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