华为云开发工具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月,具体操作步骤以最新版本更新内容为主。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一网打尽java注解-克隆-面向对象设计原则-设计模式

文章目录 注解内置注解元注解 对象克隆为什么要克隆?如何克隆浅克隆深克隆 Java设计模式什么是设计模式?为什么要学习设计模式? 建模语言类接口类之间的关系依赖关系关联关系聚合关系组合关系继承关系实现关系 面向对象设计原则单一职责开闭原…

学Pyhton静不下来,看了一堆资料还是很迷茫是为什么

一、前言 最近发现,身边很多的小伙伴学Python都会遇到一个问题,就是资料也看了很多,也花了很多时间去学习但还是很迷茫,时间长了又发现之前学的知识点很多都忘了,都萌生出了想半路放弃的想法。 让我们看看蚂蚁金服的大…

Shell 编程快速入门 之 数学计算和函数基础

目录 1. 求两数之和 整数之和 浮点数之和 2. 计算1-100的和 for...in C风格for循环 while...do until...do while和until的区别 关系运算符 break与continue的区别 3. shell函数基础知识 函数定义 函数名 函数体 参数 返回值 return返回值的含义 return与…

薛定谔的日语学习小程序源码下载

这款学习日语的小程序源码,名为“薛定谔的日语”,首页展示了日语中的50音图,让用户能够看到日语词并跟读发音。 在掌握50音图后,用户还可以进行练习。小程序会随机提问50音图中的某一个,用户需要回答是否正确&#xf…

java八股文面试[java基础]——final 关键字作用

为什么局部内部类和匿名内部类只能访问final变量: 知识来源 【基础】final_哔哩哔哩_bilibili

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…

DSO 系列文章(2)——DSO点帧管理策略

文章目录 1.点所构成的残差Residual的管理1.1.前端残差的状态1.2.后端点的残差的状态1.3.点的某个残差的删除 2.点Point的管理2.1.如何删除点——点Point的删除2.2.边缘化时删除哪些点? 3.帧FrameHessian的管理 DSO代码注释:https://github.com/Cc19245/…

深入浅出 TCP/IP 协议栈

TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下…

【Redis】Redis 的学习教程(一)入门基础

1. 简介 Redis 全称:Remote Dictionary Server(远程字典服务器),是一款开源的,遵守 BSD 协议,使用 C 语言开发的 key-value 存储系统。简单的说,它是一款跨平台的非关系型数据库,支…

爬虫异常捕获与处理方法详解

Hey!作为一名专业的爬虫代理供应商,我今天要和大家分享一些关于爬虫异常捕获与处理的方法。在进行爬虫操作时,我们经常会遇到各种异常情况,例如网络连接错误、请求超时、数据解析错误等等。这些异常情况可能会导致程序崩溃或数据丢…

Nest(3):扫盲篇:TypeScript 类和装饰器

前言 先回顾下前文中介绍了哪些内容: 使用 nestjs/cli 创建和管理 Nest 应用Hello, World 示例代码分析Nest 基本概念:模块,控制器,服务常用的装饰器:Module、Controller、Get、InjectableNest 目录结构分析nest/cli…

21.2 CSS 三大特性与页面布局

1. 开发者工具修改样式 使用开发者工具修改样式, 操作步骤如下: * 1. 打开开发者工具: 在浏览器中右键点击页面, 然后选择检查或者使用快捷键(一般是 F12 或者 CtrlShiftI)来打开开发者工具.* 2. 打开样式编辑器: 在开发者工具中, 找到选项卡或面板, 一般是Elements或者Elemen…

【仿写框架之仿写Tomact】一、详解Tomcat的工作流程

文章目录 1、启动阶段2、监听阶段:3、请求处理阶段:4、发送请求处理后的响应 当涉及到Java Web应用程序的部署和运行,Apache Tomcat无疑是一个备受欢迎的选择。Tomcat作为一个开源的、轻量级的Java Servlet容器和JavaServer Pages (JSP) 容器…

[保研/考研机试] KY124 二叉搜索树 浙江大学复试上机题 C++实现

题目链接&#xff1a; 二叉搜索树_牛客题霸_牛客网判断两序列是否为同一二叉搜索树序列。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692722892652 描述 判断两序列是否为同一二叉搜索树序列 输入描述&#xff1a; 开始一个数n&#xff0c;(1<…

Sectigo EV代码签名申请步骤

一、EV代码签名申请前提 1、单位成立时间不低于&#xff1a;3个月 2、单位工商及企查查可查 3、单位经营正常 4、注册地址真实存在&#xff0c;禁止使用集中注册地址 5、企查查登记电话和邮箱&#xff0c;确定查询结果的电话可以接听、邮箱可以接收邮件&#xff0c;如果信…

行业追踪,2023-08-22

自动复盘 2023-08-22 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

v8引擎编译全过程

环境vs2019 cmd 命令行需要设置成为代理模式 set http_proxyhttp://127.0.0.1:10809 set https_proxyhttp://127.0.0.1:10809 这个必须带上&#xff0c;不然报错&#xff0c;告诉编译器win系统的模式 set DEPOT_TOOLS_WIN_TOOLCHAIN0 源码 GitHub: GitHub - v8/v8: The…

SpringBoot复习:(53)TransactionInterceptor是在哪里配置的?

我们知道SpringBoot的事务(Transactional)最终是通过TransactionInterceptor的invoke方法调用invokeWithinTransaction方法来开启事务控制的。 TransactionInterceptor bean在哪里配置的呢&#xff1f;在ProxyTransactionManagementConfiguration: 可以看到这里创建了一个Tra…

SpringBoot 跨域问题和解决方法

Spring Boot 是一种用于构建独立的、生产级别的Java应用程序的框架。在开发Web应用程序时&#xff0c;经常会遇到跨域资源共享&#xff08;CORS&#xff09;问题。本文将详细介绍Spring Boot中的跨域问题以及相应的解决方法。 目录 什么是跨域&#xff1f;1. 使用Spring Boot…