使函数只能从另一个函数访问

0 c scope function

如何声明和定义一个函数,以便只能从一个函数访问它?我可以在另一个函数中声明一个函数.但由于本地函数定义是非法的(根据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访问?如果没有,本地声明的功能有什么用途?

Joe*_*oey 8

您可以将两个函数放在一个单独的文件中,并使您想要的那个不太明显static.C中的静态函数只能从声明它的同一源文件中访问(类似于穷人的命名空间概念).

然后,就像通常那样在头文件中公开可见函数.

  • 这是C。这大约是你能摆脱束缚和纪律语言的最远距离,在那里你可以强制执行任何你喜欢的事情。 (3认同)

Tyl*_*nry 8

您可以做的最好的事情是将两个函数放在它们自己的文件中,并声明"私有"函数具有静态链接(通过在声明前面添加单词'static').具有静态链接的函数只能通过其编译单元访问(在大多数构建系统中通常表示相同的文件).

如果必须从其他地方调用非私有函数,则必须在其调用的每个文件中编写其原型,或者创建包含原型的头文件,该原型包含在调用它的每个文件中.