函数forward-declaration在另一个函数中

Alc*_*ott 3 c c++ static forward-declaration

代码优先:

void foo(int x)
{
    void bar(int);  //is this forward-decl legal?
    bar(x);
}

void bar(int x)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,foo调用bar,通常我把forward-decl放在bar外面foo,如下所示:

void bar(int);
void foo(int x) 
{
    bar();
}
Run Code Online (Sandbox Code Playgroud)

首先,我认为可以将bar'forward-decl放在里面foo,对吗?

其次,考虑一下,如果bar是这样的static函数:

static void bar(int x)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

那我该如何向前宣布呢?我的意思是前进取消应该取消还是省略static

Ben*_*igt 6

  1. 是的,将前向声明放在另一个函数中是合法的.然后它只能在该功能中使用.并且将使用您放入其中的函数的命名空间,因此请确保匹配.

  2. 该标准说:"对某一特定实体的连续声明所暗示的联系应达成一致." (第7.1.2节).所以是的,原型必须static也是.但是,它似乎不允许将static链接函数的原型放在另一个函数中." static块内不能有函数声明"(同一节).