我想知道你是否有可能以一种只有特定的其他方法B可以调用A的方式声明方法A.
我想要限制一种从main调用的方法(因为在大学时使用奇怪的测试算法).如果main调用这个方法(这是一个帮助方法),整个程序将是垃圾.
那么,我怎么能"禁止"主要(或任何其他方法)调用我的危险方法B?
将a和b放入一个单独的编译单元(它自己的目标文件).向该编译单元声明一个 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)