另一种方法是将func_A()
and的定义func_SubA()
放在不同的翻译单元(cpp 文件)中,并通过将其制作或将其放置在匿名命名空间中来使其func_SubA()
在该文件之外不可见:static
// FILE main.cpp
//function declarations: possibly in a header file
void func_A();
void func_B();
// don't declare func_SubA() here
int main(){ /* ... */ }
void func_B(){ /* ... */ } // could also have its onw cpp file
// EOF main.cpp
// FILE func_A.cpp
static void func_SubA(){ /* ... */ }
/* or
namespace {
void func_SubA(){ ... }
}
*/
void func_A(){ /* calls func_SubA() */ }
// EOF func_A.cpp
另一种方法,正如 JesseTG 所建议的,我只是在这里明确,是使用 lambda 表达式:
//function declarations
void func_A();
void func_B();
// don't declare func_SubA();
int main(){ /* ... */ }
//function definitions
void func_A(){
// define func_SubA through a lambda
auto func_SubA = [](){ /* the body of func_SubA */ };
// ...
func_SubA(); // calls func_SubA()
// ...
}
void func_B(){ /* ... */}