代码先行:
void foo(int x)
{
void bar(int); //is this forward-decl legal?
bar(x);
}
void bar(int x)
{
//do stuff
}
在上面的代码中,foo
calls bar
,通常我把前向声明bar
在外面foo
, 像这样:
void bar(int);
void foo(int x)
{
bar();
}
首先,我认为可以放置bar
里面的前向声明foo
, right?
其次,请考虑这一点,如果bar
is a static
像这样的函数:
static void bar(int x)
{
//do stuff
}
那我应该如何前向声明呢?我的意思是前向声明应该采用还是省略static
?
是的,在另一个函数中放置前向声明是合法的。那么它只能在该函数中使用。并且将使用您放入其中的函数的名称空间,因此请确保匹配。
该标准规定:“给定实体的连续声明所暗示的联系应一致。” (第 7.1.2 节)。所以是的,原型必须是static
还。然而,它看起来不像是把一个原型static
另一个函数内部的链接函数是完全允许的。 “不可能有static
块内的函数声明”(同一节)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)