C语言:函数的独占调用

Alo*_*lon 1 c

我想知道你是否有可能以一种只有特定的其他方法B可以调用A的方式声明方法A.

我想要限制一种从main调用的方法(因为在大学时使用奇怪的测试算法).如果main调用这个方法(这是一个帮助方法),整个程序将是垃圾.

那么,我怎么能"禁止"主要(或任何其他方法)调用我的危险方法B?

tof*_*fro 6

ab放入一个单独的编译单元(它自己的目标文件).向该编译单元声明一个 static,使b全局可见,并且在特定头文件中也是已知的.

编辑单元外的任何东西都无法调用(甚至"看")a,而b对于你的程序的其余部分是完全可见的,并且能够很好地调用a.

如果要确保没有人能够更改此设置,请仅分发已编译的.o文件和相应的标头.

公元前:

static int a(int i){
   ...
}

int b(int x){
  return a(x + 100);
}
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include "b.h"
int main (int argc, char *argv[]){
   int c, d;

   c = b(100);     /* works */
   d = a(100);     /* will not compile */
}
Run Code Online (Sandbox Code Playgroud)