我正在阅读链接的问题,这启发我提出了这个问题。
考虑以下代码:
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中有作用域,但我错了。编译器为什么允许编译上述代码?是否存在实时情况下类似上述代码有意义的情况?
你有什么想法吗?