我正在阅读导致我提出这个问题的链接问题。
考虑以下代码
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()将仅在main中具有范围。但是我错了。为什么编译器允许编译上述代码?有没有像上面这样的代码有意义的实时情况?
有什么想法吗?