在第一个代码块中,编译器没有错误。另一方面,第二个代码块给出错误error: 'cin' in namespace 'std' does not name a type
。
第一段代码:
#include <iostream>
int y;
int main(){
std::cout << "Enter something! \n";
std::cin >> y;
}
第二段代码:
#include <iostream>
int y;
int main(){
std::cout << "Enter something! \n";
}
std::cin >> y;
导致这种行为的原因是什么?我能解决它吗?
如果您需要更多详细信息,请随时在评论中提问。
答案 0 :(得分:7)
C ++的工作方式,你不能在函数之外拥有可执行代码。当第一个块编译时,编译器会查看类似这样的程序:
main()
"Enter something! \n"
y
main()
现在已经完成,而且还没有任何其他功能......猜猜程序结束了!main()
以外没有任何事情可以担心,所以我已经完成了。第二个块的问题在于编译器只进入第2步。然后它会想到:
main()
已完成main()
之外注意什么?如果您正在上课或自学C ++,您将在学习后期遇到结构和课程,这些将使这更有意义。它们是编译器尝试将其解释为的语法的一个示例。
答案 1 :(得分:2)
您在C \ C ++的基本语法中失败。
std::cin >> y;
是一个声明。声明不允许在函数体之外,只有声明。编译器尝试将该行视为声明和声明中的第一个标记是类型说明符。因此,您确实收到了错误消息。