如何隐藏自己的代码(很酷)

1.引入

  幻想当我们成为一名优秀的程序员,有着各大公司想要买我们的代码,但我们并不想要让他们知道我们代码的实现,毕竟一复制便可以解决,这里我们希望有一种方法可以把我们的核心代码给隐藏掉,那我们又应该怎么去实现呢?接下来让我们一起来看看吧

2.多个文件的使用

  ⼀般在企业中我们写代码时候,代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;我们往往会根据程序的功能,将代码拆分放在多个⽂件中。
  
  ⼀般情况下,函数的声明、类型的声明放在头⽂件(.h)中,函数的实现是放在源⽂件(.c)⽂件中。
  如下:
a.add.c
//函数的定义
int Add(int x, int y)
{return x+y;
}

b.add.h

//函数的声明
int Add(int x, int y);

c.test.c

#include <stdio.h>
#include "add.h"
int main()
{int a = 10;int b = 20;
//函数调⽤int c = Add(a, b);printf("%d\n", c);return 0; }

  这里我们可以实现把关键的函数实现与主函数分开,放在不同文件中,不仅方便团队的协作,而且可以使代码更加有条理,但是我们要注意,如果是使用自己的创造的头文件的话,应该用双引号,同时头文件里面放的都是函数的声明,函数的具体实现是在源文件中的。

  通过这种分开,我们可以把我们的关键核心代码放入其他源文件中,然后我们只需要把这些源文件进行加密封装即可,售出给公司时,只需要提供头文件(函数的声明与介绍)以及加密的源文件即可,具体怎么加密呢,那就需要静态库的应用。

  这是自己的代码,将重要代码放在这个文件中

通过改变文件的属性为静态库,将这些文件化为lib文件

  我们打开lib文件可以发现,此时已经将之前的核心代码进行加密了, 而当我们想要卖给公司时,只需要把lib文件发给他,以及头文件中的函数声明发给他即可,头文件是告知其函数使用。

  导入前(公司)

  导入后  使用  我们尝试运行

  发现存在错误,实际上还不够,因为静态库的使用是需要导入的,导入方法:

  插入代码   #pragma comment(lib,"add自己的代码.lib")   双引号里面的是lib文件的名字

  这样子就运行成功了啦,同时也隐藏了我们的代码

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

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

相关文章

测试/测开——接口基础面试高频问题

前言 本文是将自己在面试前找工作的部分笔记重新整理了下&#xff0c;不少内容当时是查阅的知乎、博客园、书籍等。我自己在牛客上也学习了很多面经和经验帖&#xff0c;收获了好几家大厂offer。最近整理出来这些&#xff0c;希望能对找测开岗的朋友们有帮助&#xff01; 一、…

vue中列表渲染

列表渲染 实际开发中&#xff0c;使用每条数据的唯一标识作为key,也就是对于数组列表&#xff0c;对象中的属性如&#xff1a;id、手机号、身份证号、学号等唯一值&#xff0c;对象列表同理 只要不对列表的逆序添加&#xff0c;逆序删除等破坏顺序的操作&#xff0c;仅用于渲染…

验收材料-软件质量保证措施

一、 质量保障措施 二、 项目质量管理保障措施 &#xff08;一&#xff09; 资深的质量经理与质保组 &#xff08;二&#xff09; 全程参与的质量经理 &#xff08;三&#xff09; 合理的质量控制流程 1&#xff0e; 质量管理规范&#xff1a; 2&#xff0e; 加强协调管理&…

普冉PY32系列(十二) 基于PY32F002A的6+1通道遥控小车III - 驱动篇

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

YOLOv8改进实战 | 更换主干网络Backbone(六)之轻量化模型VanillaNet进阶篇

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

【Java开发】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介绍 1.1简介 Mybatis-Flex 是一个优雅的 Mybatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper 亮点帮助我们极大的减少了 SQL 编写的工作的同时&#xff…

记录一次较为完整的服务打包发布流程

文章目录 1. Spring Boot编程2. 打包成jar服务3. 使用Docker Compose发布服务 1. Spring Boot编程 使用Spring Initializr 选择基本工具 导入常用工具 配置多环境 参考https://blog.csdn.net/qq_37992410/article/details/121008415&#xff0c; https://blog.csdn.net/xiao…

实现点击一个选框 使得一个组件的可选性修改

实现效果 代码 html <div class"divrow"><el-checkbox-group v-model"isSendTag" :max"1"><el-checkbox v-for"(item, index) in isSendTagOptions" :key"index" :label"item.value">{{item.…

机器学习入门(第二天)——感知机

概述 每个算法都是为了解决一类问题&#xff0c;或者说解决之前的问题所创造出来的&#xff0c;而感知机&#xff0c;在解决一类问题的时候也暴露了很多问题&#xff0c;变相的推动了以后的算法的改进方向。 知识树 苹果表示相对重要的 直观介绍 现在有一盘红豆和绿豆&#…

使用 Lhotse 高效管理音频数据集

Lhotse 是一个旨在使语音和音频数据准备更具灵活性和可访问性的 Python 库&#xff0c;它与 k2 一起&#xff0c;构成了下一代 Kaldi 语音处理库的一部分。 主要目标&#xff1a; 1. 以 Python 为中心的设计吸引更广泛的社区参与语音处理任务。 2. 为有经验的 Kaldi 用户提供…

01 原神 选择题

以下这个不确定

【20年扬大真题】编写程序,功能是从键盘输入若干4位数字学号,然后输出学号中百位数字是3的学号 (输入0时结束循环)

【20年扬大真题】 编写程序&#xff0c;功能是从键盘输入若干4位数字学号&#xff0c;然后输出学号中百位数字是3的学号 &#xff08;输入0时结束循环&#xff09; #include<stdio.h> #define MaxSize 20 int BaiWei3(int x) {x x / 100;if (x % 10 3) {return 1;}els…