华为云开发工具CodeArts IDE for C/C++ 开发使用指南
简介
CodeArts IDE是一个集成开发环境(IDE),它提供了开发语言和调试服务。本文主要介绍CodeArts IDE for C/C++的基本功能。
1.下载安装
CodeArts IDE for C/C++ 已开放公测,下载获取免费体验
2.新建C/C++工程
CodeArts IDE for C/C++ 提供了创建C或C++工程的能力,可参考以下步骤进行创建:
1. 点击顶部菜单 File -> New -> Project...
2. 选择 C/C++
3. 填写表单并点击创建按钮
4. 等待工程创建完成并打开项目
3.C/C++代码编写
3.1编码基础操作
CodeArts IDE for C/C++ 包含了内置的语法着色,定义预览,跳转定义,类继承关系图,调用关系图等一些编码基础功能。
-
语法着色 - 该功能可对函数,类型,局部变量,全部变量,宏,枚举,成员变量等上色。

-
跳转定义 - Ctrl+点击或者F12跳转到定义,或者使用Ctrl+Alt+点击会打开定义到旁边。

-
定义预览 - 当光标移至符号处,则会有符号定义的悬停预览,也可以用alt+F12的快捷键进行文件内的符号预览。

-
查找所有引用 - 当光标点击或者选择到需要查找的符号,右键菜单->查找所有引用或者使用快捷键Shift+Alt+F12会打开定义在页面左侧。

-
调用关系图 - 当光标点击或选中需要调用关系图的函数时,右键菜单->调用关系图,或可以使用快捷键Shift+Alt+H调出。在关系图中,也可以点击需要查看的函数并导航到该函数,同时也能够查看子类和基类。

-
符号大纲 - 左侧工具->右上角三个点->大纲即可打开符号大纲,或者使用快捷键Ctrl+Shift+B打开工具栏。打开大纲后,双击函数即可到达函数定义的位置,并且当前符号大纲可跟随光标移动(此功能需要在大纲菜单栏中打开跟随光标选项)。

3.2 代码编写操作
CodeArts IDE for C/C++ 包含了内置的符号重命名,提取重构,代码补全/提示,实时语法检查等一些高级代码编写功能。
-
符号重命名(Rename symbol)
最基础的重构之一,但是变量或方法名字的可读性非常重要。在光标选中某个变量或方法后,右键单击以调出编辑器上下文菜单并且选择重命名符号或直接按F2,来重命名整个 C/C++ 项目中所有用到该命名的地方。

-
提取重构(Extraction refactoring)
CodeArts IDE for C/C++ 支持将字段,方法和参数提取到新类中,根据提取的内容会提供不同的重构类型。
可用的 C/C++ 重构类型包括:
提取函数/方法(Extract method)- 将选定的语句或表达式提取到文件中的新方法或新函数。

在选择提取方法(Extract method)重构后,输入提取的的方法/函数的名称。
提取表达式到变量(Extract subexpression to variable)- 将选定的表达式提取为文件中的新变量。

-
代码补全/提示(Code Completion/Hinting)
CodeArts IDE for C/C++ 代码补全包含了各种代码编辑功能,包括:代码完成,快速信息,成员列表以及参数信息。当您输入字符时,代码补全若知道可能的补全选项,则会自动弹出成员列表。如果您继续输入字符,成员列表(变量,方法等)将被过滤为仅包含您输入字符的成员。您可通过光标点击或者按Enter或Tab键插入选定的成员名称。该功能会提供各种提示信息帮助您更加方便快速的编辑代码。

-
全局符号搜索(Global Symbol Search)
Ctrl+T导出搜索框,输入需要查找的符号,页面会显示出当前文件夹所有包含此符号的文件,点击即可跳转。或者按向上或向下选择并按Enter导航到您想要的位置。

-
实时检查编译错误(该功能依赖compile_commands.json文件)
实时检查编译错误是解决编码错误的建议编辑,包括自动补全,实时语法检查等。
当编译错误时,会在错误处出现波浪线。可将光标移动或点击到C/C++的代码错误上时,会显示黄色灯泡,表示可以使用快速修复。点击灯泡或按Ctrl+。会显示可用的快速修复和重构列表。

-
Compile_commands.json 管理功能
Compiler 模式功能全面,但需要compile_commands.json文件编译数据库才能正常工作,可使用三种方式获取该文件。
-
使用内置 CMake Build Tool 插件(推荐)。构建 CMake 项目,会自动生成cmake-build-debug/compile_commands.json文件, 并且插件会自动将该文件导入到 .arts文件夹。
-
使用 CMake 生成。 如果当前工程是 CMake 工程,可以通过添加参数-DCMAKE_EXPORT_COMPILE_COMMANDS=1生成 compile_commands.json,并通过帮助->显示所有命令->Huawei C/C++:导入编译数据库文件命令导入。
-
使用 Huawei C/C++ 提供的Generate命令。可通过帮助->显示所有命令->Huawei C/C++:生成编译数据库文件,并选择存放源文件的文件夹,该方法分析头文件生成对应的编译数据库。
同时 Huawei C/C++也支持以下功能:
-
通过命令或 API 导入compile_commands.json文件(帮助->显示所有命令->Huawei C/C++:导入编译数据库文件)
-
合并多个 compile_commands.json 文件.
-
移除 compile_command.json 文件中重复的命令.
-
导入时为 clangd 提供额外的参数设置.
-
索引更新命令
-
同步工程索引(帮助->显示所有命令->Huawei C/C++:同步工程索引)
-
同步文件夹索引(资源管理器右键菜单->Huawei C/C++:同步文件夹索引)
-
同步文件索引(资源管理器右键菜单->Huawei C/C++:同步当前文件索引)
-
重置工程索引(帮助->显示所有命令->Huawei C/C++:重建全项目索引)
-
编辑源文件的编译选项并刷新索引(右键菜单->编辑编译参数)
-
以上命令和功能在 Compiler 模式或 Hybrid 模式均有效。
3.3 代码重构操作
重构是通过改变现有程序结构而不改变其功能和用途来提高代码的可重用性和可维护性。CodeArts IDE 支持重构操作,提供了多种重要的重构类型,来改变编辑器中的代码库。CodeArts IDE for C/C++ 内置了对 C/C++ 重构的支持,在本专题中,我们将展示 C/C++ 语言服务的重构支持。
-
定义构造函数(Define constructor)
在每次创建类时,可以自动定义类的构造函数,并且初始化成员。当点击或选中类名时,可以点击左侧黄色灯泡选择定义构造函数。

-
根据声明顺序排序函数(Sort functions to declarations)
根据头文件中的声明顺序,排序当前定义函数/方法的顺序。当点击或选中当前函数/方法定义时,重构选项可用。

-
将定义添加到实现文件(Add definition to implementation file)
将头文件的定义添加到实现文件中。当点击或选中当前函数/方法时,重构选项可用。

-
交换 if 分支(Swap if branches)
若当前条件只有if和else分支,选中代码片段后,选择交换 if 分支(Swap if branches),可自动交换if和else分支。

-
内联变量(Inline variable)
该功能可以用相应的值替换所有引用。假设计算值总是产生相同的结果。选中需要替换的内容,重构选项可用。

-
内联函数(Inline function)
该功能尝试使用适当的代码内联所有函数用法。它只能处理简单的功能,不支持内联方法、函数模板、主函数和在系统头文件中声明的函数。该功能可以内联所有函数引用。

-
生成 getter 和 setter(Generate getter and setter)
通过为其生成getter和setter(Generate getter and setter)来封装选定的类属性。同时也可以选择只生成getter(Generate getter)或者生成setter(Generate setter)选项。

-
声明隐式成员(Declare implicit members)
此选项会将类的隐式成员在类中声明,当选中类名时,重构选项可用。

-
填充 switch 语句(Populate switch)
该功能可以自动填充switch语句。选中任意switch字段,并且点击黄色灯泡,选择填充switch语句。

-
移除 namespace(Remove using namespace)
移除namespace功能,会自动移除所有使用到的namespace。当光标点击或选中namesapace关键字时,重构选项可用。

-
移动函数体到声明处(Move function body to out-of-line)
将函数/方法定义移动到它声明的位置。

-
在内部添加定义(Add definition in-place)
在当前函数/方法并且在类内部生成函数定义。当光标移动到函数/方法时,点击黄色灯泡,重构选项可用。

-
在外部添加定义(Add definition out-of-place)
在类外部生成当前函数/方法的函数定义。当光标移动到函数/方法时,点击黄色灯泡,重构选项可用。

-
展开宏(Expand macro)
在页面上添加展开宏(Expand macro),以便在可扩展/可折叠的部分提供内容。

-
展开 auto(Expand auto type)
展开 auto type所隐藏的变量类型。

-
函数定义外移(Move function body to declaration)
该功能会将函数/方法的定义移动到声明的位置。

-
函数定义内移(Move function body to out-of-line)
该功能会将函数/方法的定义移动到对应的文件中。

-
转为原始字符串(Convert to raw string)
此方法可以将转义后的字符串转换为原始的字符串。当点击或选择了当前字符串,点击黄色灯泡,重构选项可用。

-
快速修复(Quick fixes)
快速修复是解决简单编码错误的建议编辑,包括自动补全,实时语法检查等。
当光标移动或点击到C/C++的代码错误上时,会显示黄色灯泡,表示可以使用快速修复。点击灯泡或按Ctrl+.会显示可用的快速修复和重构列表。
本文更新与5月,具体操作步骤以最新版本更新内容为主。
相关文章:
华为云开发工具CodeArts IDE for C/C++ 开发使用指南
简介 CodeArts IDE是一个集成开发环境(IDE),它提供了开发语言和调试服务。本文主要介绍CodeArts IDE for C/C的基本功能。 1.下载安装 CodeArts IDE for C/C 已开放公测,下载获取免费体验 2.新建C/C工程 CodeArts IDE for C/…...
如何选择最适合你的SOLIDWORKS版本 硕迪科技
SOLIDWORKS是一款广泛应用于工程设计领域的三维计算机辅助设计(CAD)软件,因其强大的功能和易学易用的界面而备受工程师们的青睐。面对众多的SOLIDWORKS版本,比如SW专业版、白金版,租赁订阅版,以及solidwork…...
通过双层负载均衡实现HTTPS代理的高并发处理和容错能力
在互联网应用中,HTTPS代理服务器是承担用户请求的重要角色。当网站面临高并发请求时,单一的服务器可能无法满足需求,会导致性能下降和容错能力不足。为了解决这个问题,我们可以通过双层负载均衡技术来实现高并发处理和容错能力的提…...
Redis 整合中 Redisson 的使用
大家好 , 我是苏麟 , 今天带来 Redisson 使用 . 官方文档 : GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, Sorte…...
数据结构(5)
堆 堆可以看作一颗完全二叉树的数组对象。 特性: 1.堆是完全二叉树,除了树最后一层不需要满,其余层次都需要满,如果最后一层不是满的,那么要求左满右不满 2.通常使用数组实现,将二叉树结点依次放入数组中…...
R语言实现网状Meta分析(1)
#R语言实现网状Meta library(gemtc) help(package"gemtc") data<-gemtc::smoking #注意按照实例格式编写数据 net<-mtc.network(data$data.ab) #网状图 plot(net,mode"circle",displaylabelsT,boxed.labelF) summary(net) #网状model model<-mtc…...
Reactor 第十篇 定制一个生产的WebClient
1 为什么要用 WebClient 刚开始尝试使用 Spring WebFlux 的时候,很多人都会使用 Mono.fromFuture() 将异步请求转成 Mono 对象,或者 Mono.fromSupplier() 将请求转成 MOno 对象,这两种方式在响应式编程中都是不建议的,都会阻塞当…...
桃子叶片病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)
1.分为三类 健康的桃子叶片 ,251张 桃疮痂病一般,857张 桃疮痂病严重,770 张 2. GUI界面识别效果和predict.py识别效果如视频所示桃子叶片病害识别(Python代码,pyTorch框架,深度卷积网络模型࿰…...
matlab使用教程(21)—求函数最值
1. 求函数最优值 1.1求一元函数的最小值 如果给定了一个一元数学函数,可以使用 fminbnd 函数求该函数在给定区间中的局部最小值。例如,请考虑 MATLAB 提供的 humps.m 函数。下图显示了 humps 的图。 x -1:.01:2; y humps(x); plot(x,y) xlabel(x)…...
Redis中 为什么Lua脚本可以保证原子性?
Redis中 为什么Lua脚本可以保证原子性?...
tda4 videnc-test-app: CONTINUOUS and STEPWISE FRAMEINTERVALS not supported
/* videnc-test-app */ https://git.ti.com/cgit/jacinto7_multimedia/ git clone https://git.ti.com/git/jacinto7_multimedia/videnc-test-app.git // 编译 ./autogen.sh ./configure --enable-maintainer-mode --buildi386-linux --hostaarch64-none-linux CC/home/share…...
[已解决] libGL error: MESA-LOADER: failed to open swrast
在新的服务器中配置好虚拟环境后,利用已有的预训练模型test后,可视化时遇到: libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /u…...
JVM及垃圾回收机制
文章目录 1、JVM组成?各部分作用?1.1 类加载器(Class Loaders)1.2 运行时数据区(Runtime Data Area)1.3 执行引擎(Execution Engine)1.4 本地方法接口(Native Interface&…...
windows11不允许安装winpcap4.1.3
问题:下载安装包后在安装时显示与电脑系统不兼容,不能安装。 原因:winpcap是一个用于Windows操作系统的网络抓包库,有一些安全漏洞,存在被黑客攻击的风险。Windows11为了加强系统安全而禁用了这个库,因此不…...
matlab使用教程(23)—优化函数的参数
本博客向您介绍如何存储或访问向 MATLAB 复合函数(如 fzero 或 integral)传递的数学函数的额外参数。 MATLAB 复合函数基于某个值范围计算数学表达式。这些函数之所以称为复合函数是因为它们是接受函数句柄(函数的指针)作为输入…...
基于“互联网+ 服务供应链”的汽车道路救援系统对策分析
1。 建立“互联网服务供应链”背景下汽车道路救援系统 基于互联网的汽车道路救援,两级服务供应链结构是由服务提供商、服务 集成商和客户组成。“互联网服务供应链”背景下汽车道路救援系统组成, 它是一种 B2B2C 的形式,与前述传统汽车道路…...
浅谈泛在电力物联网在电力设备状态在线监测中的应用
安科瑞 华楠 摘要:随着信息化水平的不断发展,泛在电力物联网的建设提上日程,这对提升变电站电力设备在线监测水平,推动智能电网发展具有重要的指导意义。对基于物联网的电力设备状态监测系统进行了研究,概括了泛在电力…...
低通滤波器和高通滤波器
应用于图像低通滤波器和高通滤波器的实现 需要用到傅里叶变换 #include <opencv2/opencv.hpp> #include <Eigen> #include <iostream> #include <vector> #include <cmath> #include <complex>#define M_PI 3.14159265358979323846…...
VS中插入Qt插件后配置项目笔记
Project下要创建四个文件夹: bin(输出目录\工作目录) 、include(头文件目录) 、lib(动态库目录) 、src(源码目录) 一、主项目模块配置: 1.配置属性——>常规——>输出目录加入(..\..\bin\) 2.配置属性——>调试——>工作目录加入($(OutDir)) 备注&am…...
Hugo·Stack主题·使用及修改
代码折叠 cp themes/hugo折-themt-saick/exampleSlte/config.yamsclass"codefold"><summary class"codefold__title"><span class"codefold__title-text">" {{ with .Get 0}}{{.}}{{else}}click to expand{{ end }} "&…...
大模型提升垃圾邮件识别精度
大模型在垃圾邮件识别与处理中的应用进展与技术优化 问题解构 核心任务识别:问题核心在于了解大模型(Large Language Models, LLMs)在“垃圾邮件识别”这一经典文本分类任务上的最新应用进展,可能包括准确率提升、新技术应用、处…...
OpenClaw性能测试:Qwen3.5-4B-Claude处理百页文档实测
OpenClaw性能测试:Qwen3.5-4B-Claude处理百页文档实测 1. 测试背景与目标 上周我在整理一个开源项目的技术文档时,遇到了一个头疼的问题——这份文档长达137页,包含了代码示例、架构图和版本变更说明。手动梳理关键信息耗费了我整整两天时间…...
ElasticSearch数据可视化实战:用Kibana快速构建你的第一个Dashboard
ElasticSearch数据可视化实战:用Kibana快速构建你的第一个Dashboard 当你面对海量的ElasticSearch数据时,如何快速提取有价值的信息并直观呈现?Kibana作为Elastic Stack中的可视化利器,能够将复杂的数据转化为一目了然的图表和仪表…...
一文读懂水面无人艇:每个硬件模块到底负责什么
目录 一、水面无人艇完整系统 二、硬件搭配负责哪些功能 2.1 艇体模块:决定“能不能稳、能不能装、能不能扛风浪” 2.2 动力与航行执行模块:决定“怎么动” 2.3 导航传感器模块:决定“我现在在哪、朝哪、跑多快” 1)GPS / 北…...
智能网联汽车(CAV)缩略语大全:从C-V2X到VRUCW,一文搞懂所有专业术语
智能网联汽车(CAV)术语全解析:从技术原理到场景应用 在智能交通系统快速发展的今天,智能网联汽车(Connected-Automated Vehicle, CAV)已经成为行业变革的核心驱动力。无论是汽车工程师、软件开发人员还是交通规划者,都需要掌握这一领域的关键…...
uniapp日期处理全攻略:获取某月首尾日、近七天日期等实用技巧
Uniapp日期处理实战:从基础格式化到高级业务场景解决方案 在移动应用开发中,日期处理几乎贯穿所有业务场景。无论是电商平台的限时抢购、医疗应用的预约挂号,还是企业系统的报表统计,精准高效的日期操作都是保障业务逻辑完整性的关…...
USB2.0供电那些事儿:为什么你的外设总是供电不足?
USB2.0供电困境解析:从原理到实践的全面解决方案 当你的移动硬盘突然断开连接,或者外接键盘间歇性失灵时,很可能正遭遇USB2.0供电不足的经典难题。这种看似简单的接口背后,隐藏着复杂的电力分配机制与设备兼容性博弈。本文将带你穿…...
大模型数据治理终极指南:5个关键步骤实现高效生命周期管理
大模型数据治理终极指南:5个关键步骤实现高效生命周期管理 【免费下载链接】Foundations-of-LLMs 项目地址: https://gitcode.com/GitHub_Trending/fo/Foundations-of-LLMs 大模型数据治理是构建高质量AI系统的基石,对于确保模型性能、合规性和可…...
深入解析BUCK、BOOST与Charge Pump电路的设计与应用
1. 开关电源基础:为什么需要BUCK、BOOST和Charge Pump? 刚入行那会儿,我总觉得电源设计就是个"变压器加整流桥"的事,直到某次项目里把12V电池直接怼到3.3V的MCU上——随着一缕青烟升起,我才明白电压转换这门…...
ShapeOfView贡献指南:如何为开源项目添加新的自定义形状
ShapeOfView贡献指南:如何为开源项目添加新的自定义形状 【免费下载链接】ShapeOfView Give a custom shape to any android view, Material Design 2 ready 项目地址: https://gitcode.com/gh_mirrors/sh/ShapeOfView ShapeOfView是一款强大的Android开源库…...
