0
点赞
收藏
分享

微信扫一扫

函数静态库编译

独兜曲 2022-02-09 阅读 70
c语言

编译器:VS2022

一、 函数的声明和定义

#include<stdio.h>

int main()
{
	int a = 10,b = 20;
	int sum = Add(a, b);
	printf("%d", sum);
	return 0;
}

int Add(int x, int y)
{
	return x + y;
}

这样一段代码中,在VS2019的版本下,编译器就会给出警告: “Add”未定义。这是什么一种情况呢?这是因为C语言规定,程序中使用到的任何数据对象都要事先进行声明。

1.函数声明

对于函数的声明来说,需要包涵这么几个具体信息:函数名,函数的返回值类型,函数参数的个数、类型及排列次序。这样在编译系统对函数的调用进行检查时,就事先声明了我这个函数存在,以及检查实参和形参类型是否一致,使用调用方式是否正确等。

对于上面给出的代码,如果想进行函数的声明,也很简单,只需要在主函数内部,或者头文件下方加上: 

int Add(int x,int y);

 对于函数的声明一般出现在函数使用之前,要满足先声明后使用。

 

2.函数定义

一个函数总归会有其功能,而实现这个功能的代码就是函数的定义。一个函数的一般形式就是:

返回值数据类型  函数名(数据类型 形参,数据类型 形参)
{
   语句;
}

对于上面的代码,函数的定义就是:

 

3.函数的头文件和源文件

那么这时候问题就来了,如果所有代码都放在同一个文件下面,多个程序员共同完成一个项目的时候,你写一点我写一点,这个代码就乱了套了。所以我们要将函数的声明作为函数的头文件,函数的定义作为函数的源文件。

 这样分装函数之后,如果假如有几个程序员想一起做一个项目,就例如说大家一起做个计算器。规定A去做加法部分,B去做减法部分,C去做乘法部分,D去做除法部分。就有很明确的分工,最后在主函数中调用相关的函数就可以实现计算器的功能。

那么我们怎么在main函数的文件中调用我们自定义的函数呢,我们之前调用库函数的时候,例如:printf、scanf、strcmp等等,在文件最上方我们都写了这样一行代码;

#include<stdio.h>

#include<string.h>

我们都添加了头文件,以便我们能够使用相关的库函数。那我们的自定义函数,也需要引用头文件,不过和库函数头文件有一些不同:

 

 这里我们用的不是三角括号,而是双引号,需要注意。

二、 函数编译成静态库

假如你自己写了一个代码,实现某一个功能,其他人想要用你的代码,你不想让他知道你的源码,只想让他借用这个功能,这里就需要将我们的代码文件编译成静态库,其他人想要用这个代码,智能通过调用静态库的方式,并不能直接查看我们的代码。

 这时候我们写了个代码,用来实现求两个数相加的和的功能。

 

 

 经过这4个步骤我们可以打开Add项目的文件夹,可以看到文件夹里有个Add.lib文件:

那么这个就是我们封装好的Add的静态库。 

那么不是说别人查看不了这个静态库的源码吗,我们可以做个实验,用记事本打开我们这个lib文件:

 打开之后我们可以看到这样一堆乱码,完全就看不懂具体的内容,计算机已经将其编译成二进制了。

三、 静态库的引用

封装完毕静态库,另外一个程序员想借我们函数的功能一用。我们只需要将刚才的Add.lib文件以及Add.h文件发给他。

 这是头文件的地址。

 只需要将这两个文件,放在项目目录下,那么就可以调用我们的函数实现功能。

 第一步:添加现有项目,也就是我们Add.h

 第二步:在代码中加入这样一段引用代码,就可以调用静态库里的代码了

这就是函数编译静态库的全部内容了。

能力有限,多多包涵。

举报

相关推荐

0 条评论