如何声明和定义一个函数,以便只能从一个函数访问它?我可以在另一个函数中声明一个函数.但由于本地函数定义是非法的(根据Visual C++),我必须在全局范围内定义函数,使其他函数可以调用它.
void f1() {
void f1_private();
f1priv();
}
void f1_private() {
}
void f2() {
f1_private(); // Legal
}
Run Code Online (Sandbox Code Playgroud)
是否可以使f1_private只能从f1访问?如果没有,本地声明的功能有什么用途?
您可以将两个函数放在一个单独的文件中,并使您想要的那个不太明显static.C中的静态函数只能从声明它的同一源文件中访问(类似于穷人的命名空间概念).
然后,就像通常那样在头文件中公开可见函数.
您可以做的最好的事情是将两个函数放在它们自己的文件中,并声明"私有"函数具有静态链接(通过在声明前面添加单词'static').具有静态链接的函数只能通过其编译单元访问(在大多数构建系统中通常表示相同的文件).
如果必须从其他地方调用非私有函数,则必须在其调用的每个文件中编写其原型,或者创建包含原型的头文件,该原型包含在调用它的每个文件中.