《C++ Primer Plus》学习笔记 2.1.3 C++预处理器和iostream文件

程序清单2-1 myfirst.cpp

// myfirst.cpp -- displays a message

#include <iostream>                             // a PREPROCESSOR directive
int main()                                      // function header
{                                               // start of function body
    using namespace std;                        // make definitions visible
    cout << "Come up and C++ me some time.";    // message
    cout << endl;                               // start a new line
    cout << "You won't regret it!" << endl;     // more output
}

如果程序要使用C++输入或输出工具,请提供这样两行代码:
#include <iostream>
using namespace std;
可使用其他代码替换第2行,这里使用这行代码旨在简化该程序。
C++和C一样,也使用一个预处理器,该程序在进行主编译之前对源文件进行处理(第1章介绍过,有些C++程序使用翻译器程序将C++程序转换为C程序。虽然翻译器也是一种预处理器,但这里不讨论这种预处理器,而只讨论这样的预处理器,即它处理名称以#开头的编译指令)。不必执行任何特殊的操作来调用该预处理器,它会在编译程序时自动运行。
#include <iostream> // a PREPROCESSOR directive
该编译指令导致预处理器将iostream文件的内容添加到程序中。这是一种典型的预处理器操作:在源代码被编译之前,替换或添加文本。
这提出一个问题:为什么要将iostream文件的内容添加到程序中呢?答案涉及程序与外部世界间的通信。iostream中的io指的是输入(进入程序的信息)和输出(从程序中发出的信息)。C++的输入/输出方案涉及iostream文件中的多个定义。为了使用cout来显示消息,第一个程序需要这些定义。#include编译指令导致iostream文件的内容随源代码文件的内容一起被发送给编译器。实际上,iostream文件的内容将取代程序中的代码行#include <iostream>。原始文件没有被修改,而是将源代码文件和iostream组合成一个复合文件,编译的下一个阶段将使用该文件。

理解:当程序中有 #include 指令时,比如#include <iostream>,iostream对应的文件内的内容将会在编译的开始阶段全部被读入当前的这个文件。
即:iostream文件内的内容 将会替换掉 #include <iostream>。

原文地址:https://www.cnblogs.com/moonlightpoet/p/5615784.html