新闻  |   论坛  |   博客  |   在线研讨会
C++ 中关于 iostream、源文件命名约定以及运行 GNU (微软)编译器的几点说明
电子禅石 | 2020-07-28 22:08:23    阅读:8503   发布文章

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版)》

我的主力博客:半亩方塘


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客