C++学习笔记(一)--初识C++

0.为什么学C++

本人的专业属于电子信息类,所学的科目非常杂,毕业以后可以从事的行业也很杂。除了纯电路设计类的工作,剩下的一些工作有一些程序的编写任务。对于算法的研究有matlab编程语言就够了。但对于嵌入式开发和一些算法落地的工作基本都采用c++/c开发。复杂嵌入式系统开发基本采用c++编程,这也是我深入学习c++的初衷。

1.c++的基本认识

1.1概述

c++是c语言的拓展,其关注性能
● 与底层硬件紧密结合
● 对象生命周期的精确控制
● Zero-overhead Abstraction
引入大量特性,便于工程实践
● 三种编程范式:面向过程、面向对象(这一点是与c语言最大的不同)、泛型
● 函数重载、异常处理、引用
c++先有的标椎: C++98/03 , C++11 , C++14 , C++17 , C++20,大概每三年发布一次新的标准,在开发过程中,当前用的最多的是c++11。

1.2 c++的开发环境

编译器:Visual C++ / GCC (G++) / Clang (Clang++)
集成开发环境(就是我们常说的IDE): Visual Studio / CodeLite / Code::blocks / Eclipse/clion

注:

  1. vscode只是编辑器,如果要编译程序需要安装插件。
  2. clion的界面和pycharm差不多。

2.c++的编译/链接模型

作为计算机只能识别0101代码,所谓的高级语言必须要翻译成0101代码才能让计算机执行。这个过程被称为编译。那么为什么需要链接呢?通常我们写的程序不止一个程序文件,如果我们修改一次需要编译所有的文件将会太耗时,为此我们通常使用以下的方式:
在这里插入图片描述
这样做编译耗资源较少,处理速度较快,便于程序修改升级。如果改了源文件1,只会重新编译源文件1,会生成新的目标文件1,然后重新链接一下。
一般编译器生成可执行文件的过程:
在这里插入图片描述

预处理:

  1. 将源文件转换为翻译单元的过程。
  2. 防止头文件被循环展开 。 #ifdef 解决方案,#pragma once 解决方案

编译:

  1. 将翻译单元转换为相应的汇编语言表示
  2. 编译优化: https://godbolt.org/z/zh9aqx

链接:

  1. 合并多个目标文件,关联声明与定义
  2. 连接( Linkage )种类:内部连接、外部连接、无连接
  3. 链接常见错误:找不到定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值