命名空间和Pre

我在理解C ++中的预处理器和命名空间时遇到了一些麻烦。 例如,请考虑以下程序:

#include <iostream> 

int main() 
{
    using namespace std;

    cout << "Hello World!" << endl;

    return 0; 
}

所以当这个程序准备好编译时,预处理器会识别#include指令并将iostream文件添加到程序中,以便程序具有I / O功能(即“cout”和“endl”)。 现在根据我的教科书,作为C ++编译器标准组件的类,函数和变量放置在命名空间std中。

这是令人困惑的,因为如果标准函数(“cout”和“endl”)被放置在这个命名空间中,iostream的目的是什么? 我基本上试图理解为什么我们需要iostream和一些关于正在使用的命名空间的信息。


严格地说,你不需要using namespace std; 它所做的只是让你写

cout << "Hello World!" << endl;

代替

std::cout << "Hello World!" << std::endl;

命名空间“包含”iostream定义(除了由标准C ++库提供的其他定义外),仅在std::隐含地“前缀”到所有名称的意义上。 这个“包含”与“ iostream文件包含输入/输出函数的定义”中的“包含”不同:文件字面上包含定义; std:: namespace名称只是一个前缀,可以避免名称冲突。


头文件<iostream>包含几个有用的东西的声明,包括变量std::coutstd::endl

如果没有这些声明,当你编写cout << ...时,编译器不会知道你指的是什么。

链接地址: http://www.djcxy.com/p/29815.html

上一篇: Namespaces and the Pre

下一篇: Combining C++ and C