如何实现对函数的隐藏,看完就会

      当你写了一个函数可以实现某些功能时,你要给其他人使用,却不想让别人看到你写的函数的内容,这时你就可以通过对函数内容进行隐藏来达到目的,函数提供了对过程的封装和细节的隐藏,那么今天我们就来看看如何对函数进行隐藏:

这里以上篇博客写的Swap函数为例,这里先给出全部代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void Swap(int *px, int *py)
{
	int tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int a = 10;
	int b = 20;
	Swap(&a, &b);
	printf("a=%d b=%d\n", a, b);
	system("pause");
	return 0;
}

 那么现在我们要对当中的Swap函数进行隐藏,首先要对程序进行变形:

  1. 添加一个Swap.c源文件,将Swap函数从text.c中移出来到Swap.c源文件中
  2. 添加一个Swap.h的头文件,将Swap函数的声明放到头文件中(函数的声明这里不过多解释):
  3. 重新返回text.c源文件,在代码前加上   #include "Swap.h"   对Swap函数调用声明
  4. 我们发现改变后的代码与改变前的效果是一样的,仍然可以实现功能:

通过上面几步,我们已经对程序完成了变形,那么接下来就要实现对函数的隐藏:

  • 首先将之前的代码关闭,重新创建一个新项目叫Swap

  •  打开之前的代码的文件,根据之前保存的路径目录去找,将Swap.c和Swap.h剪切:

  •  打开新建的Swap项目所在文件,粘贴进来
  • 返回vs,在Swap项目中的源文件添加->现有项,将刚才新加入的那两个文件添加进来

 

  • 放进来后通过鼠标拖动,将.h的文件放到头文件目录下,使之看的清晰明了 

  • 点中Swap这个项目,右击属性 

  • 在这里面找到配置类型,将后面的应用程序(.exe)改成静态库(.lib),在点击应用,最后确定

 

  •  按F7,这时会创建库。完成之后再次打开文件所在目录,返回到第一个debug文件,进入发现有一个.lib文件

  • 现在我们其实已经完成了隐藏操作,那么我们来测试一下。我们刚开始写的代码把Swap.c和Swap.h都移出了,现在只剩下了一个text.c,那么现在将这个.lib文件拷贝一份到这个代码中,再把之前的.h头文件拷贝一份过来

  • 那么这里的Swap函数原码可以看到吗?我们打开看一下,这里还是用之前给大家介绍的notepad++来打开,因为有人没看过我之前的文章可能不知道这个软件,这里我把下载链接附上,大家可以使用一下

         链接:https://pan.baidu.com/s/1odhoP29Im0S4NBLLyMAhZg 
         提取码:igbu

        打开后我们会发现出现的并不是代码,而是一堆看不懂的符号

 

  • 再次回到vs,将之前的关闭,重新打开之前最早的那个程序(这里说明一下我最早那个项目名字是project1 )这里我们会发现,Swap.c已经出错了,右键将之移除

  • 在mian函数前加上一句#pragma comment (lib,"Swap.lib"),这时编译运行就会成功了

  • 这样我们发现对函数实现了隐藏,只通过text.c和Swap.h这两个文件就完成了程序运行。

 在操作过程中有时会出现一些错误,这里我是将上面的x64改为x86然后就可以运行了。

猜你喜欢

转载自blog.csdn.net/Watery________1314/article/details/82915962