1. 关于 #include <iostream>

    在一个C++程序中,几乎都需要有这么一条语句#include <iostream>,以致于我们每写一个C++程序,都习惯性地先写下这条语句,再接着写程序的其他部分,由于写下这条语句是习惯性的动作,所以我估计很少有人真正花时间回想一下这究竟是什么东西?为什么在一个C++程序中要写这条语句?说来也很简单:

    在C++中,没有专门用来进行输入输出(IO)的语句,而是用标准库来提供IO机制,我们通常只需要了解IO库中的一部分基本概念和操作,iostream 库包括两个基础类型:istream 类型ostream 类型,分别表示输入流和输出流。

    标准库定义了4个IO对象:

    • cin (发音为 see-in) —— istream 类型的对象,也被称为标准输入
    • cout (发音为 see-out) —— ostream 类型的对象,也被称为标准输出
    • cerr (发音为 see-err) —— ostream 类型的对象,通常用来输出警告和错误信息
    • clog (发音为 see-log) —— ostream 类型的对象,输出程序运行时的一般性信息

    系统通常将程序所运行的窗口与这些对象关联起来。

    #include <iostream>是告诉编译器我们想使用 iostream 库,尖括号中的名字指出了一个头文件,每个使用标准库设施的程序都必须包含相关的头文件,#include指令和头文件的名字必须出现在同一行中。

  2. 源文件命名约定

    将什么样的文件识别为C++源文件,取决于具体的编译器,譬如我在Ubuntukylin 13.10中所使用的编译器版本是:g++ 4.8.1 (在shell中输入g++ --version即可显示版本),在shell中输入man g++后,在 line 693 位置,可以看到下图所示的内容:

    从上图可以看到,在 g++ 4.8.1 中,C++源文件命名约定为:.cc、.cp、.cxx、.cpp、.CPP(大写)、.c++、.C(大写)

    由于比较熟悉和常用的C++源文件的扩展名为 .cpp,故推荐使用(个人意见)。

  3. 运行 GNU(微软)编译器

    默认情况下,运行 GNU 编译器的命令是g++

    g++ -o prog1 prog1.cpp

    -o prog1是编译器参数,指定了可执行文件的文件名,在不同的操作系统中,此命令生成一个名为 prog1(UNIX) 或者 prog1.exe(Windows) 的可执行文件,如果没有这个参数,则在 UNIX 系统中生成一个名为 a.out 的可执行文件,在 Windows 系统中生成一个名为 a.exe 的可执行文件

    根据使用的 GNU 编译器的版本,可能需要指定-std=c++0x来打开对 C++11 的支持,另外,打开对有问题的程序发出的警告的选项是一个好的习惯,在 GNU 编译器中使用 -Wall选项

    运行微软编译器的命令是 cl (Windows下):

    cl /EHsc prog1.cpp

    命令 cl 调用编译器,/EHsc 是编译器选项,用来打开标准异常处理,此命令会自动生成一个名为 prog1.exe 的可执行文件,也就是说,微软编译器会自动生成一个与源文件名对应的可执行文件,后缀为 .exe,在微软编译器中使用 /W4 选项对有问题的程序结构发出警告


    主要参考了《C++ Primer中文版(第5版)》