當第一個參數對它沒有意義時,我得到該錯誤。檢查Evaluator
被稱爲類型:
struct A {
virtual void* b(nonsense*, string*);
};
=> error: 'b' declared as a 'virtual' field
struct A {
virtual void* b(string*, nonsense*);
};
=> error: 'nonsense' has not been declared
要了解的東西是否是一個對象或函數聲明,編譯器有時不得不掃描整個聲明。聲明中可能形成聲明的任何構造都被視爲聲明。如果不是,那麼任何這樣的構造都被認爲是一種表達。 GCC顯然認爲是因爲nonsense
是無效的類型,它不能作爲有效的參數聲明,因此將整個聲明視爲字段(注意它另外說error: expected ';' before '(' token
)。同樣的東西在本地範圍內
int main() {
int a;
// "nonsense * a" not treated as declaration
void f(nonsense*a);
}
=> error: variable or field 'f' declared void
int main() {
// "nonsense * a" treated as parameter declaration
typedef int nonsense;
void f(nonsense*a);
}
=> (compiles successfully)
你能告訴我們上面和下面的代碼嗎?有沒有其他的錯誤。 – JaredPar 2009-05-20 18:56:23