利用Clion编译器完成C++的头文件与源文件的映射

news2024/11/18 0:34:23

1、前言

嘿嘿,众所周知,本人是一名Java后端人员,那么为什么开始搞C/C++了咧?
因为Java是在C/C++的基础上开发的语言,而且性能也是业界公认的除了机器语言外最好的编程语言,所以我就想啊,如果将Java和C/C++来结合开发是否会将Java程序的性能进一步的提升呢,
我们不妨假设:Java与C/C++结合开发会提升Java程序性能,就让我们以后慢慢来验证这个假设吧。

2、下载编译器

本人没有使用Visual Stadio来开发C/C++,这是为什么? 因为TMD我电脑装不了,Cao🤬,另外,所谓Java开发,就不可能不知道IDEA,所以我就选择了他们公司的Clion编译器,这个也是编写C/C++的编译器,同时也支持各种前端的语言。

JetBrains官网奉上: 点击此文字即可。

3、步入正文

3.1、创建一个C++项目

这个就不用我多说了吧,创建好后就是下图的样子:
在这里插入图片描述
这里我已经打开了我的Main文件,也就是主文件。

3.2、创建存放头文件和源文件的文件夹

右击项目名,得到如下图:
在这里插入图片描述
不用我多说了吧,选择Directory选项。
在这里插入图片描述
为什么要创建这两个文件夹呢?
因为在项目中,我们不可能只有一两个文件,当文件一多起来的时候,项目就会十分混乱并且难以管理,所以在这里就使用分层的思想对项目进行开发、管理。

3.3、创建头文件与源文件

鼠标右击headersource就会看到下图:
在这里插入图片描述

  1. C/C++ Source file:就是C/C++的源文件
  2. C/C++ Header file:就是C/C++的头文件

本人初步认为:头文件与源文件的关系就相当于Java中的接口与实现类的关系。

创建好头文件和源文件后得到如下图:
在这里插入图片描述

3.4、建立头文件与源文件的映射

3.4.1、首先我们在源文件中编写一个方法

在这里插入图片描述

除了在源文件中编写方法,还需要指定此源文件隶属于哪个头文件。

3.4.2、将源文件的方法声明在头文件中声明出来。

在这里插入图片描述
方法声明:就是方法的全限定名: 返回值 方法名(参数类型 变量名);
此时,就可以看到方法声明的左侧出现了一个箭头,这个箭头就表示头文件与源文件关联上了。点击这个箭头就可以跳到方法的具体实现上。

3.4.3、解决警告

我们看到无论是头文件还是源文件,顶部都有一个黄底黑字的警告,这个就是因为我们没有在项目管理工具中声明源文件导致的。

点击源文件右上角的 Add to CMake Project,弹出如下对话框:

在这里插入图片描述
点击OK 就会在管理工具CMake中看到如下图:
在这里插入图片描述
可以看到我们的源文件已经加入的管理工具中了,这是因为我们使用了这个文件中的方法,所以我们就需要在管理工具中配置。使用Clion就要配置这个东西,否则会报错,使用Visual Stadio就不需要。

4、运行

  1. 在源文件中引入我们自定义的头文件
  2. 调用头文件中的方法
    在这里插入图片描述

在这里插入图片描述

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

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

相关文章

记一次返工

记一次返工 作者:Grey 原文地址: 博客园:记一次返工 CSDN:记一次返工 本文搬运自自己的博客园博客,发布于 2018-05-12 说明 本周我经历了参加工作以来,最大的一次返工,这一周都是茶饭不思…

安全灵活,华为云桌面成为数字化办公最佳搭档

目前云上数字化办公已经是大势所趋,但是如何快速高效地为用户提供便捷高效的工作和生活体验,依然需要大量的技术投入来实现。而华为云桌面就是云上办公的门户与平台,它可以将各种业务系统在云端进行集中管理与调度,通过统一的接口…

二、collection接口

文章目录Collection接口和常用方法(以ArrayList为例)基本使用方法遍历元素方式1(iterator)遍历元素方式2(增强for)练习Collection接口和常用方法(以ArrayList为例) 以ArrayList,其他集合同理使用 基本使用方法 注:集合添加基本数据类型会自动装箱成对…

非零基础自学Golang 第15章 Go命令行工具 15.1 编译相关指令 15.1.2 run

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.1 编译相关指令15.1.2 run第15章 Go命令行工具 15.1 编译相关指令 15.1.2 run 我们在调试代码时通常会使用go run命令。 该命令会编译执行Go语言源码,不会在当前目录生成可执行文件&#x…

【LeetCode每日一题:1799. N 次操作后的最大分数和~~~记忆化搜索+动态规划+状态压缩+最大公约数】

题目描述 给你 nums ,它是一个大小为 2 * n 的正整数数组。你必须对这个数组执行 n 次操作。 在第 i 次操作时(操作编号从 1 开始),你需要: 选择两个元素 x 和 y 。 获得分数 i * gcd(x, y) 。 将 x 和 y 从 nums 中…

07. 渗透测试之针对网站的信息收集

07. 渗透测试之针对网站的信息收集 01 信息收集简介 什么是信息收集 信息收集(Information Gathering)是指通过各种方式获取所需要的信息。信息收集是信息得以利用的第一步,也是关键的一步。信息收集工作的好坏,会影响整个渗透…

全国各城市疫情达峰进度条感染高峰时间表最新

防疫政策放开之后,多位专家就研判,未来一个多月内全国疫情将达到感染高峰。而近日,一张全国各地疫情进度和最终高峰的预计时间表流传,对各城市首轮感染高峰期进行了预测。那么,全国各城市疫情达峰进度条如何了&#xf…

怎么高效的开发一款成功的产品?Working Backwards

过去的几天一直在回顾整个产品团队过去一年所做的工作,有的工作有亮点,有的工作可以说是乏善可陈。对于不好的,发现其中的一个核心原因就是没有坚持“以终为始”的原则。现将我2021年10月写的一篇公司内部博客再次分享给团队,也分…

Simple Yet Effective Graph Contrastive Learning for Recommendation

1. 摘要 图神经网络(GNN)是一种强大的基于图的推荐系统学习方法。最近,结合对比学习的gnn在处理高度稀疏数据时,在数据增强方案的推荐方面表现出了优异的性能。尽管它们取得了成功,但大多数现有的图对比学习方法要么在用户-项目交互图上执行随…

JAVA零基础小白学习教程之day08_接口多态

day08-JAVAOOP 课程目标 1. 【理解】什么是接口 2. 【掌握】接口的定义格式 3. 【掌握】接口的使用 4. 【理解】接口的成员特点 5. 【理解】类和接口 抽象类和接口之间的关系 6. 【掌握】单继承多实现 7. 【理解】接口之间的多继承 8. 【掌握】接口的案例 9. 【理解】什么是…

一个程序员的新冠防护最佳实践

至今未阳,做了几次抗原检测都是阴性,所以把个人的防护经验给广大程序员朋友分享一下,尤其家里有小孩老人的可以参考一下。 我一天的防护操作 1、午餐 吃午饭时,走楼梯不去挤电梯,而且是在其他人吃完饭后&#xff0c…

Unreal Engine中调试常用方法

目录 常用调试方法 AddOnScreenDebugMessage UE_LOG:在控制台看调试信息 在蓝图中直接调用PrintString 自定义日志分类 声明 定义 简化日志输出的宏 日志格式化输出 常用调试方法 在虚幻引擎中常用的打印日志方法有三种,分别是:UE_…

C++运算符重载,匿名对象

目录 1、加号运算符重载 1.1 通过自己写成员函数,实现两个对象相加属性后返回新的对象 1.2通过成员函数实现加法运算符重载 1.3通过全局函数实现加法运算符重载,运算符重载也可以发生函数重载 1.4总结--对于内置的数据类型的表达式运算符是不可以改变…

Python+Requests实现接口自动化测试

一般对于自动化的理解,有两种方式的自动化。 第一,不需要写代码,完全由工具实现,这种方式的工具一般是公司自己研发的,方便黑盒测试人员使用。这种工具的特点是学习成本低,方便使用,但是通用性…

面向5G C-RAN组网的机房配置标准与模型

【摘 要】当前5G网络建设成本高,投资压力大,基站建设进度受铁塔公司制约;基站机房电费、租赁、服务费用逐年上升,运营维护压力大。面向未来5G建设,通过C-RAN组网,实现BBU集中化部署,可促进降本增效,实现低成本建网。首先分析了C-RAN区所处的网络位置,其次从BBU框多基…

java基于springboot的心理健康管理网站-计算机毕业设计

运行环境: 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架springbootvue 项目介绍 心灵治愈交流平台的主要使用者分为管理员和用户、心理咨询师,实现功能包括管理员:首页、个人中心、系统公告管理、用户管理、心…

网上订餐项目(附源代码及数据库)

目录 一、项目概要 二、项目展示 三、数据库 四、项目源码 五、毕设专栏 首页 登录界面 注册页面 一、项目概要 系统主要功能模块有: (1)首页菜品:主要包括购买菜品、菜品加入购物车的功能 (2)我的…

django-rest-framework

文章目录 (1)Web应用模式及API接口 (2)Restful规范 (3)drf安装和简单使用 (4)源码分析 (5)序列化器-Serializer (6)局部和全局响应配…

STL篇之vector

一、介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它…

NR HARQ (四)dynamic codebook

微信同步更新欢迎关注同名modem协议笔记 上篇提到type-1 HARQ-ACK codebook,即semi-static codebook,UE要为每个PDSCH候选位置生成反馈,也会包含实际没有下行传输的PDSCH,再加上配置CBG的场景,HARQ-ACK 码本中包含的无…