C语言中的嵌套函数 - 最佳实践

Jus*_*ier 2 c

我刚刚意识到一个函数可能在C中的另一个函数内定义:

void main(){
  int foo(){ return 2; };
  printf("%d\n", foo());
}
Run Code Online (Sandbox Code Playgroud)

除了是一个巧妙的技巧,有用的是内部函数对外部函数是私有的.但是......在"真实世界"的应用程序中这样做是否足够充分?使用此语法的最佳做法是什么?

Mar*_*off 14

嵌套函数是非标准扩展,由GCC(以及其他我不知道的)实现.由于它不遵循标准,最佳实践可能包括不在您打算移植的代码中使用它.

如果您的最终目标是在C中使用"私有"函数,那么最好使用单独的文件并使"私有"函数保持静态,以便它们不会链接到其他目标文件.

  • 另请注意,即使gcc仅支持C,也不支持C++. (2认同)