代码前瞻性声明先行:功能内的另一个功能
void foo(int x)
{
void bar(int); //is this forward-decl legal?
bar(x);
}
void bar(int x)
{
//do stuff
}
在上面的代码,foo
电话bar
,平时我把foo
bar
之外的正向DECL,就像这样:
void bar(int);
void foo(int x)
{
bar();
}
首先,我认为可以将bar
的正向decl放入foo
,对不对?
其次,考虑这一点,如果bar
是static
功能是这样的:
static void bar(int x)
{
//do stuff
}
那我应该怎么前瞻性声明呢?我的意思是应该前向decl采取或省略static
?
如果这是C++,那么你应该*不*在你的问题上有“c”标记,并且*应该*使用未命名的命名空间而不是'static'关键字。如果这是C,那么你应该*不*在你的问题上有“C++”标记,并且*应该*将你的前向声明标记为'static'。 – ruakh 2012-02-08 02:30:09
@ruakh:尽管有人坚持这样说,但并不反对使用static。 “静态”和未命名的名称空间各有其优点。 – 2012-02-08 02:40:46
@BenVoigt,优势?如? – Alcott 2012-02-08 02:44:43