代碼前瞻性聲明先行:功能內的另一個功能
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