问题 Code goes first: void foo(int x) { void bar(int); //is this forward-decl legal? bar(x); } void bar(int x) { //do stuff } In the code above, foo calls bar , usually I put the forward-decl of bar outside of foo , like this: void bar(int); void foo(int x) { bar(); } First, I think it's OK to put bar 's forward-decl inside foo , right? Second, consider this, if bar is a static function like this: static void bar(int x) { //do stuff } Then how should I forward-declare it? I mean should the forward