C语言航路外传之如何隐藏代码及声明和定义的在工程中真正的使用场景
创始人
2024-04-05 05:36:06
0

在之前函数第二幕的时候我们提到过函数的声明和定义,其中有一种方式是这样使用的,如下代码所示

#include
int Add(int x,int y);
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int ret = Add(a, b);printf("%d", ret);return 0;
}
int Add(int x,int y)
{return x + y;
}

这时候,有人就觉得这个也没有什么大用处啊,直接都放在开头不行吗?何必多此一举呢?,其实这种声明定义函数的方式在实际工程中并非这样使用的。在真正的项目中我们是这样使用的

我们在多放入一个头文件和一个.c文件,add.h和add.c。

 然后我们把加法函数,放在add.c中

 

 把函数的声明放在add.h中

 这样的话,如果我们想在我们的工程中使用Add这个函数,我们只需要在test.c中#include "add.h"即可,如下图所示

 这样我们试着运行一下,代码仍然正常运行

 上面的这种操作中:

我们把add.h和add.c称作一个模块,test.c是一个模块

 add.h和add.c为加法模块,test.c为测试模块,也就是test.c就是为了测试一下加法模块

在加法模块中,我们一般是在头文件中声明函数,.c文件中是实现函数,然后测试模块,只需要引用一下头文件,编译器就会自动将三个文件组合到一块。有点类似于使用库函数,只不过这个库函数是由我们自己制作的。但是要注意,使用c语言提供的库函数,是引用 <>这个括号,而我们自己造的库函数是需要使用 '' "的。

那么这样写有什么好处呢?

1.这样写可以是我们的程序模块化

比如说我们有一个加减乘除的程序,我们利用这种方式可以进行分工,一个人写一个模块即可。这样的话,每个人只需要开发自己的模块就可以,最后我们一调用他们的模块就可以了。我们这样就实现了模块发开发了。

2.这样写也可以隐藏我们的代码

我们之前说过,想要调用同一个项目的不同源文件的函数,我们可以使用一个extern声明一下函数就可以,那为什么我们又要搞一个头文件,然后引用呢?,原因是是由头文件可以做到相关代码的隐藏。

我们举一个例子吧,假如说张三写了一个代码,他想把这个代码卖给一个公司,但是又不能直接给源代码,因为明年没法收费了。那该怎么解决呢?

假如说这是我们所写的代码

 我们是这样做的

我们点击这个

 改为静态库

 应用确定后

我们运行一下程序,得到下列错误信息

 这时候我们就生成了我们的静态库了

我们在上面提示的路径中找到我们的文件

 这时候我们就可以把这个.lib文件和我们的头文件一块卖出去了,这个是没有人看得懂的,我们用记事本打开看一下

 买家将买到的静态库和头文件放到文件中

 

我们直接使用是不行的

 会出现无法解析的外部命令,这时候我们只需要输入一条指令,导入静态库即可

 这样代码就能正常运行了


总结:

本次外传主要讲解了定义和声明在工程中的重要作用,以及如何隐藏自己的代码。当然静态库的使用并不是本节课的重点,主要是为了演示定义和声明的重要作用,以后会详细介绍关于静态库的使用的

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...