c++的编译环境
来源:互联网 发布:qt 连接mysql 编辑:程序博客网 时间:2024/05/27 09:46
初学c++语言的时候,我很纳闷,为什么同样是包含头文件的include,在c语言中被包含的头文件一般都是.h文件,而在c++中包含的头文件,可以是.h文件,还可以是没有后缀名的文件(如典型的iostream),当然,其他的.hpp文件在这里暂且不论。还有,为什么c++包含的头文件可以是stdio.h,还可以是cstdio等等。
它们之间的差别是什么?这得从c++的编译环境说起了。
来看这张图:
(1) c语言兼容库
c++语言自诞生以来就肩负兼容c语言的重担,所以在c++的编译环境中会内置c库。在c++程序中,我们可以直接包含stdio.h文件
#include <stdio.h>
stdio.h是源于c语言标准c库的文件,所以其头文件是.h文件合情合理。这样子就可以使得c语言程序可以不做修改拿到c++编译环境中编译。
(2) c++标准库
c++标准库并非c++语言的一部分,它是由类库和函数库组成,其头文件是不包含.h后缀的,且定义的类和对象都位于std命名空间中。值得注意的是,c++标准库涵盖了c库的所有功能文件,如标准c库的stdio.h、stdlib.h,在c++标准也有也同样功能的文件,为cstdio、stdlib。
既然c++标准库已经涵盖了标准c库,为什么编译环境还要集成c语言兼容库呢?还是那句话,这样子就可以使得c语言程序可以不做修改拿到c++编译环境中编译。
(3)编译器扩展库
这是针对不同的编译器而独有扩展的,例如g++和vc++,它们在这一板块就不同
(4)c++标准语法模块
不用说,这是c++标准语法的支持
(5)c++扩展语法模块
同样是针对不同的编译器而独有扩展语法
到这里,之前的疑惑就迎刃而解了。
c++标准库还预定义了很多常用的数据结构,如链表、栈、队列等等。这也是接下来要学习的关键。强调一点,c++标准库的所有函数、类库都位于std命名空间中,在使用这些类库或者函数时候,要么需要作用域限定”std::”,要么使用其命名空间using namespace std;
- Notepad++的C编译环境
- Notepad++的C编译环境
- 简单的C语言编译环境
- SublimeText下C编译环境的设置
- 配置VsCode的C/C++编译环境
- C/C++的编译器|编译环境
- Android编译环境(1) - 编译Native C的helloworld模块
- Android编译环境(1) - 编译Native C的helloworld模块
- Android编译环境(1) - 编译Native C的模块
- Android编译环境(1) - 编译Native C的helloworld模块
- Android编译环境编译Native C的模块
- Android编译环境(1) - 编译Native C的helloworld模块
- Android编译环境(1) - 编译Native C的模块
- Android编译环境 - 编译Native C的helloworld模块
- Android编译环境 - 编译Native C的helloworld模块
- 在Windows环境下配置Object-c的编译环境
- Windows环境下配置Objective-C的编译环境
- pro*c编译环境
- EasyDSS流媒体解决方案之Grunt的使用简介
- js语句switch的一个小案例
- 单链表的头插法和尾插法
- Sublime 的安装及使用
- C#设计模式(十)观察者模式(Observer Pattern)
- c++的编译环境
- 集合和泛型
- Linux下创建用于并指定该用户的主目录和相关权限
- 用Bootstrap栅格系统表单
- Java循环控制
- JVM笔记(一)
- HDU 4453 Looploop (splay tree)
- EasyDSS流媒体解决方案之CDN内容分发网络
- Gazebo学习笔记--第一篇