我是reading導致我問這個問題的關聯問題。嵌套函數不被允許,但爲什麼嵌套函數原型被允許? [C++]
考慮下面的代碼
int main()
{
string SomeString();
}
所有說,編譯器將其視爲函數原型,而不是作爲一個字符串對象。現在考慮下面的代碼。
int main()
{
string Some()
{
return "";
}
}
編譯器說這是無效的,因爲我猜嵌套函數定義是不允許的。 如果不允許,爲什麼允許嵌套的函數原型?它沒有給予任何好處,而不是讓人混淆(或者我在這裏錯過了一些有效的觀點?)。
我想通以下是有效的。
int main()
{
string SomeFun();
SomeFun();
return 0;
}
string SomeFun()
{
std::cout << "WOW this is unexpected" << std::endl;
}
這也令人困惑。我期待功能SomeFun()將只有在主要有一個範圍。但是我錯了。爲什麼編譯器允許編譯上面的代碼?是否有任何實時情況下,上述代碼有意義?
有什麼想法?
+1只需點擊相同的查詢,&下面的答案包含所有信息和更多信息。 – slashmais 2010-11-04 05:39:14