我尝试了关注,它毫无问题地工作,但是在这种情况下,尚未定义STD。
using namespace std;
int main()
{
....
}
您的代码是非法的。指令using
只能提名以前声明的名称空间,即可以通过名称查找找到名称的名称空间。
在这种情况下,您的编译器显然会为std
提供特殊处理。它是一个特定于编译器的扩展名,将std
视为隐式定义的命名空间。如果您在代码中尝试了其他名称名称,则很可能无法编译。
所有using namespace std
都会告诉编译器,当标识符(命名变量,type等(出现在代码中时,请查看std
名称空间以匹配名称。
在您的main()
功能中,根本没有使用标识符({}
是一个空块(。因此,没有必要找到匹配的候选人,在两种情况下,编译的结果都是相同的。
如果将cout << "Hellon"
之类的语句添加到main()
中,则using namespace std
将导致编译器在命名空间std
中考虑任何名为cout
的内容,作为标识符cout
的有效匹配。如果这是在#include <iostream>
之后出现的,则std::cout
被认为是可行的匹配。如果编译器不可见<iostream>
中的声明(在您的情况下,因为没有#include <iostream>
(,则编译器不能将std::cout
视为cout
的候选匹配,并且会相应地发布诊断。
C 标准在std
或使用需要using namespace std
和using namespace othername
行为不同的指令方面没有指定任何不同的内容。如果您的编译器以不同的方式对待它们(识别命名空间std
,但没有其他人,即使没有一个声明(,那么这是您的编译器的特定的。
尝试做std :: cout,它行不通。
using namespace std
只是定义了名称空间
#include {x}
'包括'名称空间中的代码
即,std::cout
将需要#include <iostream>
。非常简单的解释,但这是正在发生的事情。