没有任何 #include "using namespace std;"?

"using namespace std;" without any #include?

本文关键字:std namespace using 任何 #include      更新时间:2023-10-16

我尝试了关注,它毫无问题地工作,但是在这种情况下,尚未定义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 stdusing namespace othername行为不同的指令方面没有指定任何不同的内容。如果您的编译器以不同的方式对待它们(识别命名空间std,但没有其他人,即使没有一个声明(,那么这是您的编译器的特定的。

尝试做std :: cout,它行不通。

using namespace std只是定义了名称空间

#include {x}'包括'名称空间中的代码

即,std::cout将需要#include <iostream>。非常简单的解释,但这是正在发生的事情。