在面对一个大型的代码,需要分文件编写的时候,应该怎么办呢;以及在编写出一个功能时,有人想要买这个功能,怎么在不给出源代码的情况下让买家可以使用这个代码功能呢?

我们一点点来,首先,假设我们要写一个加法功能的实现,

这里是在单个文件里调用函数,实现一个加法的功能,

下面我们把自定义函数放在下面,上面对自定义函数进行一个声明,

下面我们把代码放到多个文件里,

创建两个文件,用来实现加法的功能,

在add.h中放入自定义函数的声明,

add.c中放入自定义函数,

add.h中对自定义函数进行声明,

add.c中放入自定义函数的内容,

这里我们在其他的文件里对编写了一个函数,那么我们想要在主函数调用的话要怎么办呢,

这里我们可以类比一下库函数,库函数是开发人员写好功能后,用户只需要用include调用就可以了,那么想要在main函数里使用我们自定义的add函数的话,只需要在开头加上,#include"add.h",那么我们就相当于调用了自定义函数add,

下面我们来运行一下看看,

我们可以看到,代码是正常运行了的,

那么为什么我们要把一个可以简单的用一个文件写出来的东西给搞复杂呢,

这是因为,我们在以后免不了面对一些大型的工程需要我们的设计,那么如果在一个文件里写,那大概率是要排队的,假设每个模块分两个人来设计,那么谁先设计?这总归会延长工期,效率不高,那么怎么提高效率,怎么让不同的模块一起设计?我们就可以用上面所讲的方法,建立多个文件,这样就可以实现多人同时进行一个大项目的编写,

这里要提一点,add.h内的声明是可以舍弃的,

这里我将add.h中的声明屏蔽后依旧是可以运行的,那么我们为什么还要多此一举,在额外的去建立一个add.h的文件呢,

这就涉及到我们这篇文章所要讲的第二个点了,我们可以通过这个实现代码隐藏,这里假如张三在业余时间做了一个游戏引擎,公司A想要买张三的这个代码,但是张三害怕买了之后,公司把代码改改就跟自己没关系了。那张三说,我可以买这个功能,但是不给你看代码,这个引擎有什么问题,我来维护,我来修。公司A可以写代码来使用我这个功能,那想让人家使用电话,你得告诉人家你的名字,参数,功能等等是什么,怎么使用对吧。那怎么能把代码隐藏起来的同时把这些东西给到买家呢,那这里头文件就有着巨大的作用,如上述例子,我把add.h暴露,里面写上用法,名称,参数,返回值等,把aad.c隐藏起来,那这样就必须要写多个文件了,不能把add函数的声明放在add.c里,从而省略aad.h了。

aad.c怎么隐藏呢,

我们可以把它变成静态库或者动态库,我们假设把它变为静态库,

这里是张三写的一个功能add

包含着两块内容,其中add.c是代码,想要隐藏起来,add.h里是要卖出去,让买家可以看懂的,写着用法,

找到项目名称,右击鼠标,点击属性,

将默认的应用程序改为静态库,然后点击应用,确定,

点击生成,点击生成解决方案,

我们这里生成了一个add.lib文件,这就是一个静态库,我们可以来看一下,在刚刚新建的存放这些文件代码的文件夹里有一个x64,

Debug里就有一个add.lib

我们可以右击鼠标,打开记事本,看一下里面的内容,

里面是一堆乱码,都是我们看不懂的信息,是看不到源码信息的,那么这时候张三就放心的把这个文件卖给了A公司,但是只卖这一个是不行的,还要把头文件一起给A公司,

现在进入公司所写文件中,将add函数导入进去,

右击,点击添加,点击现有项,找到add.h添加,

但是这里并不能使用add.lib这个静态库,我们需要在源.c中导入一下静态库,

现在就可以正常使用了,

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

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

相关文章

【分享】3种方法保护Excel文件不能随意打开

做好的Excel表格不想被他人随意打开?那就一定要看看下面小编分享的3种方法,看看如何禁止打开Excel表格。 方法一:设置密码保护 我们可以给Excel表格设置“打开密码”,这样只有输入正确的密码,才能打开表格。 设置步骤…

java动态规划学习笔记

学习笔记目录,这里记录个大纲,详情点链接 背包问题 01背包问题综述 01背包问题(二维数组)https://blog.csdn.net/m0_73065928/article/details/136794406?spm1001.2014.3001.5501 01背包问题(滚动数组&#xff09…

OpenHarmony游戏应用程序-实现的一个手柄游戏

介绍 本篇Codelab是基于TS扩展的声明式开发范式编程语言,以及OpenHarmony的分布式能力实现的一个手柄游戏。 说明: 本示例涉及使用系统接口,需要手动替换Full SDK才能编译通过。 完成本篇Codelab需要两台开发板,一台开发板作为游…

6 修改主机名和HOSTS文件

后期我们会配置多台服务器,那么每台服务器我们都会给定一个主机名,方便后期通过主机名进行访问。主机名的修改我们可以在安装操作系统时对其修改,如果忘记了,就可以修改配置文件完成,像后期我们进行虚拟机克隆后&#…

(一)基于IDEA的JAVA基础5

Scanner的使用 使用scanner可以接收键盘上输入的数据, Scanner inputnew Scanner(System.in); 导包的方式: 什么是导包,导入的是jdk提供的java开发工具包,我们建一个java文件,psvm快捷输入后,打上new S…

海边游艇港口迈入智能新纪元:数字孪生系统引领未来趋势

在浩瀚的海洋边,游艇港口不仅是停泊游艇的港湾,更是展现城市风貌与智慧科技的窗口。如今,随着数字化技术的飞速发展,海边游艇港口也迎来了前所未有的变革——数字孪生系统的应用,正悄然改变着传统游艇港口的运营模式&a…

C语言例3-33:从键盘输入一个正整数保存至int 型变量 num,输出由8~11构成的数(从低位、0号开始编号)

算法分析&#xff1a; 使变量num右移8位&#xff0c;将原来的8~11位移到低4位上构造一个低4位为1&#xff0c;其余位为0的整数&#xff08;0000 0000 0000 1111&#xff09;与变量num进行按位与运算 代码如下&#xff1a; #include<stdio.h> int main(void) {int num,…

【最后2天】京东云游戏云服务器0门槛抽奖送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息&#xff1a;抽奖活动开启&#xff01;时间&#xff1a;3月17日——3月24日 最高奖品&#xff1a;16G 6个月&#xff1b;32G 3个月 抽奖规则&#xff1a;B站点赞评论关注即可参与抽奖&#xff0c;3.24日公布获奖名单。 抽奖地址&#xff1a; 【首次抽奖】16G、32G免费…

docker的部署与安装以及部署一个docker(容器)应用及docker容器常出现的问题

docker 架构图 一、docker的部署与安装 1、在 CentOS 上安装 Docker 移除旧版本&#xff08;如果有的话&#xff09;&#xff1a;sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-…

大模型时代,5个最顶级的向量数据库

介绍5个向量数据库。 大模型时代&#xff0c;向量数据库彻底的火了&#xff0c;今天我分享业内最频繁使用的向量数据库&#xff0c;更多实践经验&#xff0c;可以文末参加我们的技术落地的讨论&#xff0c;喜欢本文记得收藏、关注、点赞。 1 Chroma 使用ChromaDB构建LLM应用程…

信雅纳400/800G网络测试仪之 CDF/ Extended Payload 功能:完全用户自定义的协议报文支持/可编程的协议内容支持

Note# 2024-3-21 今天被一个做芯片测试的客户追着问&#xff0c;应该合作在测试仪上做完全自定义的报文&#xff0c;添加自己的私有协议进去&#xff0c;他觉得每次都导入报头太麻烦了&#xff0c;然后就看了下Application Note关于CDF功能的描述&#xff0c;照着机翻的版本来…

DashScope - 阿里模型服务灵积

文章目录 关于 DashScope快速上手代码调用http 请求示例Python 调用 关于 DashScope 官方主页&#xff1a;https://dashscope.aliyun.comPYPI : https://pypi.org/project/dashscope/支持模型&#xff1a;https://dashscope.console.aliyun.com/model DashScope灵积模型服务建…

Spring学习记录之面向切面编程

AOP&#xff08;面向切面编程&#xff09;是一种编程思想&#xff0c;其作用在于在不改变其原始设计的基础上进行功能增强。这也是Spring的开发理念&#xff1a;无侵入式编程。其实&#xff0c;这是一种代理思想&#xff0c;事实上&#xff0c;SpringAOP是动态代理的一种形式。…

一站式App流量统计,Xinstall助您洞悉用户行为

在如今的移动互联网时代&#xff0c;App的推广和运营对于开发者来说至关重要。然而&#xff0c;想要精准掌握App的流量情况&#xff0c;却并不是一件容易的事情。这时&#xff0c;一款强大的App流量统计工具就显得尤为重要。而Xinstall&#xff0c;正是这样一款能够帮助开发者轻…

优惠:阿里云4核16G服务器优惠价格26.52元1个月、149.00元半年

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

项目实战-开发工具入门/基本框架搭建/项目初始化/引入组件库

上周更新完了之前vue3的shopping项目&#xff0c;接下来&#xff0c;将会开启一个新的项目&#xff0c;效果是类似于移动端的一个伙伴匹配项目&#xff0c;今天这篇文章从需求分析到架构设计再到项目初始化&#xff0c;基本框架搭建几个部分来为大家详细介绍。 从这个项目开始…

流程引擎表单引擎有哪几个方面的优势?

想要在信息科技迅猛发展的时代中&#xff0c;拥有强劲的市场竞争力&#xff0c;随时捕捉市场发展动态&#xff0c;获得长久发展&#xff0c;就需要正确掌握优质的发展技术平台&#xff0c;为企业可持续发展注入新鲜动力。低代码技术平台、流程引擎表单引擎的兴盛发展是推动各中…

UI功能6大流程、接口测试8大流程这些你真的全会了吗?

在讲接口流程测试之前&#xff0c;首先需要给大家申明下&#xff1a;接口测试对于测试人员而言&#xff0c;非常非常重要&#xff0c;懂功能测试接口测试&#xff0c;就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试&#xff0c;一般也是面试笔试必问。为方便大家更…

一些 AI 工具

AI 搜索&#xff1a;Phind&#xff0c;perplexity AI聊天大模型&#xff1a;chatgpt&#xff0c; kimi&#xff08;国内可用&#xff0c;支持上传文件&#xff09; AI 机器人&#xff1a;https://www.coze.com/ AI工具集&#xff1b;https://ai-bot.cn/#term-2 agent GPT&a…

大数据--hdfs--java编程

环境&#xff1a; virtualbox ubantu1604 Linux idea社区版2023 jdk1.8 hadoop相关依赖 使用java操作 1. 判断/user/stu/input/test.txt文件是否存在&#xff0c;存在则读出文件内容&#xff0c;打印在控制台上。反之&#xff0c;输出“文件不存在”。 package abc;impo…