代码优先:
void foo(int x)
{
void bar(int); //is this forward-decl legal?
bar(x);
}
void bar(int x)
{
//do stuff
}
在上面的代码中,
foo
调用了 bar
。通常情况下,我会将 bar
的前向声明放在 foo
外面,就像这样:void bar(int);
void foo(int x)
{
bar();
}
首先,我认为将 bar
的前向声明放在 foo
内部是可以的,对吗?
其次,考虑这种情况,如果 bar
是一个像这样的 static
函数:
static void bar(int x)
{
//do stuff
}
那么我应该如何前向声明它?我的意思是,前向声明应该带有还是不带 static
?
static
关键字。如果您在使用C,则问题中不应该有 "c++" 标签,而应将前向声明标记为static
。 - ruakhstatic
并没有被弃用,尽管一些人仍然坚称已经过时。static
和匿名命名空间各有各的优点。 - Ben Voigt