【C++初阶】一、入门知识讲解(C++关键字、命名空间、C++输入输出、缺省参数、函数重载)

news2024/11/29 2:51:29

=========================================================================

相关代码gitee自取

C语言学习日记: 加油努力 (gitee.com)

 =========================================================================

接上期

【数据结构初阶】十一、归并排序(比较排序)的讲解和实现
(递归版本 + 非递归版本 -- C语言实现)-CSDN博客

 =========================================================================

                     

引入:什么是C++

  • C语言结构化模块化的语言适合处理较小规模的程序
    对于复杂的问题规模较大的程序需要高度的抽象和建模时C语言就不合适了
    为了解决软件危机,20世纪80年代,计算机界提出了:
    OOPobject oriented programming面向对象
    思想
    支持面向对象的程序设计语言应运而生

                             
  • 1982年,Bjarne Stroustrup博士C语言的基础上引入并扩充了面向对象的概念
    发明了一种新的程序语言,为了表达该语言与C语言的渊源关系命名为C++
                             
  • 因此:C++基于C语言而产生的,
    即可以进行C语言的过程化程序设计

    又可以进行以抽象数据类型为特点的基于对象的程序设计
    还可以进行面向对象的程序设计
                      
  • C++在C语言的基础之上容纳了面向对象编程思想
    增加了许多有用的以及编程范式
    熟悉C语言的话,对C++的学习有一定的帮助
                    
  • 本篇博客主要目标
    1、补充C语言语法的不足,以及C++如何对C语言设计不合理的地方进行优化的
    如:作用域方面IO方面函数方面指针方面宏方面
    2、为后续了解类和对象打下基础

           

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

             

引入:C++的发展史

1979年,贝尔实验室的本贾尼等人试图分析unix内核的时候
试图将内核模块化,于是在C语言的基础上进行扩展增加了类的机制
完成了一个可以运行的预处理程序称之为 C with classes

                    

C++语言也进行着逐步递进由浅入深过程

C++的历史版本:
阶段内容
C with classes

类及派生类、公有和私有成员、类的构造和析构、友元、内联函数、赋值运算符
重载等

C++1.0添加虚函数概念,函数和运算符重载,引用、常量等
C++2.0更加完善支持面向对象,新增保护成员、多重继承、对象的初始化、抽象类、静态成员以及const成员函数
C++3.0进一步完善,引入模板,解决多重继承产生的二义性问题和相应构造和析构的处理
C++98C++标准第一个版本绝大多数编译器都支持,得到了国际标准化组织ISO)和美国标准化协会认可,以模板方式重写C++标准库引入了STL(标准模板库)
C++03C++标准第二个版本,语言特性无大改变,主要:修订错误、减少多异性
C++05

C++标准委员会发布了一份计数报告(Technical Report -- TR1),正式更名为C++0x,
即:计划在本世纪第一个10年的某个时间发布

C++11增加了许多特性使得C++更像一种新语言
如:正则表达式、基于范围for循环、auto关键字、新容器、列表初始化、标准线程库等
C++14对C++11的扩展,主要是修复C++11中的漏洞以及改进,
如:泛型的lambda表达式,auto的返回值类型推导,二进制字面常量等
C++17在C++11上做了一些小幅改进,增加了19个新特性,
如:static_assert()的文本信息可选,Fold表达式用于可变的模板,
if 和 switch 语句中的初始化器等
C++20自C++11以来最大的发行版引入了许多新的特性
如:模块(Modules)、协程(Coroutines)、范围(Ranges)、概念(Constraints)
等重大特性;
还有对已有特性的更新,如:Lambda支持模板、范围for循环支持初始化等
C++23制定中……

            

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

              

一、C++关键字(C++98版本)

C++总计63个关键字包含C语言的32个关键字

该C++版本关键字表格:
asmdoifreturntrycontinue
autodoubleinlineshorttypedeffor
booldynamic_castintsignedtypeidpublic
breakelselongsizeoftypenamethrow
caseenummutablestaticunionwchar_t
catchexplicitnamespacestatic_castunsigneddefault
charexportnewstructusingfriend
classexternoperatorswitchvirtualregister
constfalseprivatetemplatevoidtrue
const_castfloatprotectedthisvolatilewhile
deletegotoreinterpret_cast

红色关键字之前C语言博客有提到或使用过的关键字

         

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

             

二、namespace -- 命名空间关键字

(1). 命名空间的作用:

C/C++中,变量函数后面要了解的类都是大量存在的,
这些变量函数的名称都将存在于全局作用域可能会导致很多冲突
使用命名空间的目的对标识符的名称进行本地化,以避免命名冲突名字污染
namespace关键字的出现就是针对这种问题

示例:

                     

                     


                    

(2). 命名空间的定义:

  • 定义命名空间需要使用到namespace关键字

    关键字后接命名空间的名称然后再加上一对大括号{}即可

    大括号{}中内容命名空间的成员
                      

  • 一般开发中会使用项目的名称作为命名空间的名称
                            

一般命名空间的定义:

命名空间嵌套子命名空间:

存在多个相同名称的命名空间:
  • 同一个工程中允许存在多个相同名称的命名空间
    编译器最后会合并成同一个命名空间
                 
  • 一个工程中的 test.h头文件)  text.cppC++文件
    两个同名命名空间会被合并成一个

                     

                     


                    

(3). 命名空间的使用:

定义一个命名空间定义了一个新的作用域

命名空间中的所有内容局限于该命名空间中

所以不能通过直接调用来使用命名空间中的内容

命名空间的使用三种方式

                      

方式一:
加命名空间名称和作用域限定符
  • 作用域限定符两个冒号) --   : :

                       

方式二:
using namespace 命名空间名称 展开命名空间
  • 使用 using namespace 命名空间名称 可以展开对应的命名空间
    展开后可以直接通过该命名空间中成员的名称使用该成员
                        
  • 但是使用该方式对命名空间的展开
    会导致命名空间的所有内容暴露出来
    可能又会导致命名冲突问题
                   
  • 所以一般在自己使用时为了方便才会使用该方式
    如果是项目工程该方式一定要慎重使用,可能会出大问题的

                 

方式三:
使用using关键字只展开命名空间中的某个成员
  • 通过方式二直接展开命名空间会有命名冲突的风险
    那么我们可以通过
    using 命名空间名称::指定成员
    指定只展开命名空间中的某个成员
                         
  • 这种方式比较常用的,
    通常是对一些常用的成员对象进行使用
    避免频繁使用方式一调用命名空间减轻代码冗余

            

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

             

三、C++输出&输入

C++中有了新的输入和输出方法,虽然说有了新的输入输出方法,
之前C语言中的输入和输出方法也是可以用的
了解C++的输入和输出方法前,需要先了解以下概念

                     

                     

std -- C++标准库命名空间

stdC++标准库的命名空间名C++标准库的定义实现都放在这个命名空间中
上一标题我们知道了使用命名空间的三种方式,而使用std命名空间的方式要考虑实际情况

               

std命名空间的使用惯例:

  • 在自己的日常练习中,建议直接方式二即可
    即:using namespace std
    这样使用std命名空间就很方便了,不用频繁使用方式一进行操作
                     
  • 而在项目工程中,using namespace std 展开方式二展开),
    标准库就全部暴露出来了,如果我们定义了跟库中重名的 类型/对象/函数
    就会存在命名冲突问题。该问题在日常练习中很少出现
    但是项目开发中代码较多规模大,就很容易出现
                        
  • 所以建议在项目开发中使用方式三指定展开
    即:using std::成员(对象)
    指定展开std命名空间中常用的几个库对象/类型/成员
    像是C++输出时使用的cout输入时使用的cin

                         

                         


                        

cout 和 cin

  • cout  --  console(控制台) out  --  标准输出对象(控制台)  --  流插入
    cin  --  console(控制台) in  --  标准输入对象(键盘)  --  流提取
                        
  • 使用cout标准输出对象cin标准输入对象
    需要包含 <iostream> 头文件IO流头文件以及 按命名空间使用方法使用std
注:C++ <iostream>头文件 不需要像C语言一样加“.h”后缀

早期标准库所有功能全局域中实现声明在“.h”后缀的头文件
使用时只需包含对应头文件即可后来将标准库所有功能实现在std命名空间
为了和C语言头文件区分,也为了正确使用命名空间规定C++头文件不加“.h”后缀
旧编译器(vc 6.0)中还支持 <iostream.h> 格式,后续编译器已不支持,
因此推荐使用 <iostream> + std命名空间 的方式
                   

  • cout cin 全局的流对象endlendline)是特殊的C++符号表示换行输出
    他们都包含在 <iostream>头文件
                         
  • 使用cout进行输出时还需要用到<<  --  流插入运算符
    使用cin进行输入时还需要用到>>  --  流提取运算符
    (在C语言中<<>> 位于算符在C++中又多了以上身份
                    
  • 使用C++输入和输出相对C语言更方便
    不需要像 scanf / printf 输入输出时要手动控制格式%d%p……),
    C++的输入和输出可以自动识别变量类型
                         
  • 实际上 cout cin 分别是 ostream istream 类型对象
    >> <<涉及运算符重载等知识这里只是简单了解并使用
    关于coutcin还有很多更复杂的用法
    比如控制浮点数输出精度控制整型输出进制格式等,但并不常用
    实在需要使用时可以用C语言来操作C++兼容C语言的操作
示例:

对应代码:
//包含IO流头文件:
#include <iostream>

//指定展开命名空间成员:
using std::cout;  //指定展开标准输出对象(控制台)
using std::cin;  //指定展开标准输入对象(键盘)
using std::endl;  //指定展开C++换行符号

int main()
{
	int a = 10; //整型变量
	double b = 3.14; //浮点型变量

	cout << "使用cout打印当前a和b:" << endl;

	//使用cout进行输出:
	cout << a << endl << b << endl;
	/*
	* 通过cout标准输出对象和<<流插入运算符进行输出打印:
	* 
	* 先将a这个变量流进std::cout这个控制台中打印,
	* 再进行endl换行,再将b这个变量
	* 流进std::cout这个控制台中打印,再换行。
	* 
	* 即使 a变量 和 b变量 的类型不同也能打印
	* C++的输入和输出可以自动识别变量类型
	*/
	
	cout << "使用cin分别输入数据到a和b:" << endl;

	//使用cin进行输入:
	cin >> a >> b;
	/*
	* 通过cin标准输入对象和>>流提取运算符对数据进行输入:
	*
	* 让你在控制台上输入的数据分别流入a和b这两个变量中
	*
	* 即使 a变量 和 b变量 的类型不同也能输入
	* C++的输入和输出可以自动识别变量类型
	*/

	cout << "输入后再使用cout进行输出打印:" << endl;

	cout << a << endl << b << endl;

	return 0;
}

            

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

             

四、缺省参数

(1). 缺省函数的概念:

缺省参数在声明或定义函数时函数的参数指定一个缺省值
调用该函数时如果没有指定实参则采用该形参的缺省值否则使用指定的实参,

有了缺省参数可以调整参数的各种形式来调用该函数

                        

  • 缺省值必须是常量或者全局变量
                    
  • C语言不支持缺省参数编译器不支持
                             
  • 缺省参数不能在函数声明和定义中同时出现

                     


                    

(2). 缺省函数的分类:

全缺省参数:

函数的所有参数都设置对应的缺省参数

图示:

                          

                   

半缺省参数:

只对函数的部分参数设置对应的缺省参数

                       

  • 半缺省参数必须从右往左依次来给出不能间隔着给
    传参从左往右半缺省参数从右往左
图示:

            

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

             

五、函数重载

自然语言中,一个词可以有多重含义
人们可以通过上下文来判断该词真实的含义,即该词被重载

                           

函数重载的概念:

函数重载是函数的一种特殊情况
C++允许在同一作用域中声明几个功能类似的同名函数
这些同名函数的形参列表参数个数参数类型类型顺序不同
函数重载常被用来处理实现功能类似但数据类型不同的问题

图示:

                     

                     


                    

(难)C++支持函数重载的原理 -- 名字修饰(name Mangling)

为什么C语言不支持函数重载而C++支持函数重载

解决这个问题,需要先了解一下编译链接的过程,往期相关博客:
学C的第三十四天【程序环境和预处理】_高高的胖子的博客-CSDN博客
                        

简单解释编译链接过程:

假设我们现在有三个文件

Func.h                Func.cpp                Test,cpp

函数声明)        (函数实现)        (主函数调用

执行主函数时需要进行以下过程

预处理  =>  编译  =>  汇编  =>  链接

现有文件和其内容:

                     

预处理:
  • 预处理过程操作包括:头文件展开(主要)  /  ​​​宏替换  /  条件编译  /​  去除注释​​​

Fun.cpp文件Test.cpp文件 中,因为都包含了 Func.h头文件

所以在预处理时对头文件进行展开,之后会生成预处理文件Func.i文件 和 Test.i文件

所以在 Func.i文件 中就会有Func函数的声明和实现Func.i函数声明和定义),

Test.i文件会有被调用的函数的声明和调用Test.i函数的声明和实际调用

                           

编译:
  • 编译过程操作包括:检查语法是否错误 / 生成汇编代码

进行编译时生成汇编代码文件.s文件),

Func.s文件Test.s文件分别由 Func.i文件 Test.i文件 生成),

Func.s文件存放了两个重载函数对应的汇编代码

Test.s文件 中则存放了主函数main函数的汇编代码

包括被调用的两个重载函数的汇编代码

要调用这两个重载函数,还需要用到汇编语言中的 call指令获取函数的地址

但在编译阶段,因为 Test.i文件 中只包含了 Func.h头文件只有函数声明没有函数实现

所以 call指令无法获得对应的函数地址

在这种情况下,编译器判断调用的函数和头文件中函数是否匹配,如果匹配的话

即使 call指令 还没找到函数地址也可以先让其通过编译方便实现多文件项目

                  

汇编:
  • 汇编过程操作包括:将汇编代码文件中的代码转换为二进制的机器码
    二级制的机器码CPU能读懂的代码

汇编后生成目标文件.o文件),
 Func.o文件 Test,o文件分别由 Func.s文件Test.s文件 生成),

两个文件都将汇编代码转换成了对应的二进制机器码

                 

链接: 
  • 链接过程操作包括:将目标文件链接合并到一起链接一些没有确定函数地址等等

汇编操作中Func.o文件 Test.o文件 合并为 a.out文件默认情况下),

合并后的 a,out文件 中:

之前在编译过程call指令未找到的函数地址可以在合并后的 a.out文件 中找到
(因为合并前 Func.o文件包含对应函数的实现

                          

                          
---------------------------------------------------------------------------------------------

                       

C++支持重载函数,而C语言不支持的原因:

通过上面对编译链接过程的简单了解,我们可以知道:

编译过程中 call指令 还未找到被调用函数的地址,直到链接过程合并文件后才能够找到

                   

C语言不支持重载函数的原因:

C语言中没有重载函数,即函数名唯一的情况下

找函数地址只需要通过唯一的函数名即可找到
即在链接过程中通过唯一的函数名 Func.o目标文件 中的符号表进行对地址的查找

所以如果C语言中有重载函数函数名不唯一的情况下无法在链接过程中找到函数地址

因此C语言无法支持重载函数

                      

C++支持重载函数的原因 -- 名字修饰(name Mangling):

不同编译器实现方式不同,这里Linux中的g++为例

C++中有重载函数的情况下,即函数名不唯一的情况下

C++有一个函数,可以通过函数名参数情况修饰出一个新的函数名字

函数名相同参数情况不同,就能修饰出不同的函数名字

通过修饰出的函数名字查找对应的函数地址

  • 修饰名字构成方式
    _Z  函数名字符个数  +  函数名  +  各参数首字母
    假设有一个函数:Func(int a, double b)修饰后的函数名字为:_Z4Funcid
    假设有另一个函数:Func(double b, int a) 修饰后的函数名字为:_Z4Funcdi
    所以即使函数名相同也可以通过参数情况来创建出不同的函数名字
    ​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居

HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居 文章目录 HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssist…

pytorch实现 --- 手写数字识别

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在Pytorch&#xff…

天津热力管网监测系统丨高效、稳定的供热解决方案

热力管网监测系统是一种用于监测和控制系统热力管道的智能技术。热力管网监测系统通过将传感仪器建设在热力管道上&#xff0c;实现对管道内温度、压力、流量等参数的实时监测&#xff0c;同时将数据传输到控制中心进行数据分析&#xff0c;以保障热力管道的安全稳定运行。 中央…

不学51直接学stm32可以吗?学stm32需要哪些基础?

不学51直接学stm32可以吗&#xff1f;学stm32需要哪些基础&#xff1f; 不管那些大佬技术多么牛逼&#xff0c;大多数入门都是从51单片机开始。 最近有一些入门的小伙伴问我说看到同学都从直接从STM32开始干了。最近很多小伙伴找我&#xff0c;说想要一些stm32的资料&#xff…

C++ reference

cppreference.com 《现代C语言核心特性解析》 这是一本 C 进阶图书&#xff0c;全书分为 42 章&#xff0c;深入探讨了从 C11 到 C20 引入的核心特性。 本书不仅通过大量的实例代码讲解特性的概念和语法&#xff0c;还从编译器的角度分析特性的实现原理&#xff0c;让读者…

王道p18 第11题 现在有两个等长升序序列 A和 B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列 A和B的中位数。

视频讲解&#x1f447;&#xff1a; p18 第10题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int search(int a[], int b[], int c[]) {int i 0;int j 0;int k 0;while (i < 5 && j < 5){if (a[i] < b[j])c[k] a[i];elsec[k…

NOIP2005提高组第二轮T3:传纸条

题目链接 NOIP2005提高组第二轮T3&#xff1a;传纸条 题目描述 小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。一次素质拓展活动中&#xff0c;班上同学安排坐成一个 m m m 行 n n n 列的矩阵&#xff0c;而小渊和小轩被安排在矩阵对角线的两端…

GraphCodeBert:基于数据流的代码表征预训练模型

GraphCodeBert https://arxiv.org/abs/2009.08366 1 模型结构 使用多层双向 Transformer 变量定义 &#xff1a; C&#xff1a;源码集合W&#xff1a;文本集合V&#xff1a;变量集合E&#xff1a;变量间的边的集合 输入&#xff1a;把注释&#xff0c;源代码和变量集连接为…

【MySQL基本功系列】第一篇 先熟悉MySQL的运行逻辑

​ 我将推出一系列关于MySQL的博客文章&#xff0c;涵盖了从入门到深入底层的原理。这些文章将包括MySQL的运行逻辑、InnoDB存储引擎、SQL优化、undo log、bin log等多个方面的知识。希望这些文章能为你提供宝贵的信息和洞见&#xff0c;并帮助你更好地理解和应用MySQL。同时&a…

国产系列 | Atlas 300I Pro 推理卡性能、应用场景、技术规格介绍

Atlas 300I Pro 推理卡是基于昇腾AI处理器的新一代高性能推理卡&#xff0c;融合“通用处理器、AI Core、编解码”于一体&#xff0c;提供超强AI推理、目标检索等功能&#xff0c;具有超强算力、超高能效、高性能特征检索、安全启动等优势&#xff0c;可广泛应用于OCR识别、语音…

UMS攸信技术与欣奕华复合机器人携手共进,领跑智能制造未来!

近年来&#xff0c;全球机器人领域的相关创新机构与科技企业不断探索人工智能、人机协作、多技术融合等领域&#xff0c;推动机器人在仓储运输、智能工厂、医疗康复等领域的深入应用。 2023年10月19日&#xff0c;攸信技术与浙江欣奕华达成战略合作&#xff0c;成为其产品特约经…

Mysql Cluster (NDB - Network Database) - 分布式

Mysql高可用架构 复制&#xff08;Replication&#xff09; 是本文中所有 MySQL 技术的基础。包括&#xff1a;异步复制、半同步复制&#xff0c;增强半同步复制。InnoDB 副本集&#xff08;MySQL InnoDB ReplicaSet&#xff09; 无缝衔接其他 MySQL 官方提供的应用程序&#…

Java智慧工地管理平台可视化大数据建造工地APP源码

建筑行业是国民经济的重要物质生产部门和支柱产业之一&#xff0c;同时&#xff0c;建筑业也是一个安全事故多发的高危行业。如何加强施工现场安全管理、降低事故发生频率、杜绝各种违规操作和不文明施工、提高建筑工程质量&#xff0c;是摆在各级政府部门、施工企业面前的一道…

多机位直播案例

目录 1、案例简述 2、设备准备&#xff1a; &#xff08;1&#xff09;笔记本电脑 &#xff08;2&#xff09;手机 &#xff08;3&#xff09;触控一体机 &#xff08;4&#xff09;教室前端监控摄像机 &#xff08;5&#xff09;教室后端监控摄像机 &#xff08;6&…

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…

java拉取股票数据进行分析

1.背景 2.数据获取分析 3.代码获取数据 代码: package com.life.gupiao;import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpUtil; import cn.hutool.poi.excel.ExcelUtil; import…

Scala中使用Selenium进行网页内容摘录的详解

前言 公众号成为获取信息的重要途径之一。而对于公众号运营者来说&#xff0c;了解公众号的数据情况非常重要。比如&#xff0c;你可能想要获取公众号的文章内容&#xff0c;进行数据分析或者生成摘要。或者你可能想要监控竞争对手的公众号&#xff0c;了解他们的最新动态动态…

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…

Jmeter全流程性能测试实战

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

Chart 2 OpenCL简介

文章目录 前言OpenCL简介OpenCL 标准API 函数OpenCL C OpenCL Profiles总结 前言 记录本人学习OpenCL的历程&#xff0c;总结一些重要的知识点&#xff0c;作为个人学习笔记&#xff0c;参考书籍 Qualcomm Snapdragon™ Mobile Platform OpenCL General Programming and Optim…