导航:首页 > 源码编译 > 代码编译封装

代码编译封装

发布时间:2022-08-23 15:22:28

A. 什么叫做把代码封装

封装的概念来自对面向对象的编程模式 比如说一个方法,你把他放到一个类里面, 下次如果别的地方要用到的话,直接调用这个方法就行了,不用再重新编写。
这样能明白么?
如果没有面向对象的基础,可以去了解一下

B. 软件开发中代码如何封装

不知道你是什么语言,但程序编译后都会生成dll,这个dll就是你在程序里面写的一些类,也就是封装好了的类,在程序里他会自己引用这个dll

C. 函数封装,计算机是如何实现封装的功能的

封装是上层建筑了,底层依然是汇编代码,再到计算机执行就是二进制代码,汇编语言依然是人类使用的有助记符的语言,计算机实际使用的其实还是01这样的二进制流,所以二进制代码我们称之为机器码,这个代码计算机看得懂,而人类很难读懂。
汇编是对计算机的二进制代码的一个最基本的封装,毕竟01这样的二进制流,人类看不懂。所以人类用一些简单的指令来代替这样的二进制数据。而将汇编代码转换成计算机的二进制代码的过程,我们称之为编译。汇编作为最基本的封装,其实就是对二进制代码的一个简单的翻译,即将机器码翻译为人类语言。如汇编指令add翻译成0101110100101101(假设的)
高级语言则是对更多的功能进行封装,如实现类、解构等,也进行了更多的功能强化,如类的继承、重载,虚拟类、虚函数等等。这些东西,最终也都会被翻译成机器码,让计算机执行。这些高级封装只是方便人类使用,如面向对象,函数式编程等,我们用起来很方便,实际上最终还是被翻译成机器码在使用,我们可以将封装粗略的理解为“函数”。即将特定的对象、功能集成到一块,形成一个个的功能模块。这些功能模块,有些是函数,有些是类。而在使用的时候,我们不必对这些模块再进一步学习即可快速上手。所以高级语言开发起来很简单,很快捷。
但是封装这个行为,至少目前还是由人类提出并完成的。所以就目前的情况而言,计算机编程不至于人类无法接触最底层的东西,因为始终有人在从事这个封装工作。如要将某个东西独立出来,他们会经过论证,然后再去做出来。
当然,如果计算机强大到可以自行做出更好的封装了,也许哪一天人类真不懂底层语言了。但是这种AI依然还是人类制作出来的,也就会有人懂如何制作AI,而制作AI的这个底层又成了新的底层了,人类照样也还掌握。直到某天AI可以自己开始制作自己了,甚至可以开发出更强大的AI了,那就无需人类继续学习这些语言了。到那时,人类只需要学会自己的母语就可以了,计算机语言?不存在的!AI需要?不需要的!

D. 用php做的网站 网站程序(代码)实行封装编译之后 可以对页面内容进行修改吗

封装并不影响前段显示和搜索引擎优化这些,但是封装后你没源代码,就不能对网站进行修改,除非用反编译的软件反编译出源代码

E. 想把某些代码封装起来,类似java的jar包,让开发方只能通过接口使用其中的方法,而无法看到里面的

编译成静态库,或者动态库 注意!动态库只能在ios8以上版本使用

F. 怎么用Keil将C程序封装成lib库

在团队工作中,经常会有模块维护和代码封装的问题。把需要封装的代码打成一个lib无疑是一种很好的方式。
1.创建lib
创建一个lib很容易,只需要创建一个target,然后把需要封装的代码全部加进来,然后再Options of Target中选择Create Library,然后编译,因为是lib所以不需要链接,编译过了,你的lib就创建了。当然了,为了别人可以轻松的使用,请提供头文件支持哦。
2.使用lib
使用lib就更容易了,把lib和头文件加入你的工程,直接调用就是了。lib库会和你工程中其它编译后的obj一起链接,形成最后的目标文件。
3.注意事项
首先,Startup和中断处理程序不要封入LIB,这些程序会在链接的时候产生问题。具体的原因么,有点复杂,应该是中断程序的link机制有所不同的关系吧。
其次,Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中,因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。这个warning在Keil的文档中说的好清楚了,我粘过来吧:
It is common practice ring the development process to write but not call
additional functions. While the compiler permits this without error, the
Linker/Locator does not treat this code casually because of the support for data
overlaying, and emits a warning message.
Interrupt functions are never called, they are invoked by the hardware. An
uncalled routine is treated as a potential interrupt routine by the linker. This
means that the function is assigned non-overlayable data space for its local
variables. This quickly exhausts all available data memory (depending upon the
memory model used).
If you unexpectedly run out of memory, be sure to check for linker warnings
relating to uncalled or unused routines. You can use the linker’s IXREF
directive to include a cross reference list in the linker map (.M51) file.
大意就是说,Keil的内存应用模式是指定地址的,也就是要根据调用关系来决定哪块地址可以被复用。对于这种没人调用的函数,Keil会认为是中断处理程序,并不能决定调用关系,所以此类uncalled函数的空间不能和其他的程序共享,也就是说,这函数用多少RAM,你就少多少RAM。那uncall多了会怎么样?----废话,当然是内存溢出了。
所以,lib的功能可以做的大而全,但是里面的模块一定要分的要多细,有多细,只有这样,你才能像在windows上用CRT一样舒服的使用LIB。

个人总结
1. 生成lib 的工程可以没有main函数,可以只有一个.c文件,一个.c文件中可以只有一个函数
2. 需要在lib工程中建立一个.h文件, 必须用extern声明各全局变量和函数.

3. 调用lib文件的工程中必须包括lib中的.h文件, 也就是lib工程和调用工程都包含同一个.h文件(好像有点废话)
4.Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中. 没有调用关系的最好是一个函数单独放在一个.c文件中.这是为了避免在keil中应用程序调用lib库里出现告警. 因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。
通常为每一个函数编一个.C文件,而整个lib用一个.h文件,这样就可以使只有被调用的函数参与连接
5.调用lib库时需要在工程中将.lib文件加进来. 在Group中右键,然后Add ,注意文件类型中选择*.lib.

G. C++、Visual C++、MFC(编译和封装)之间的关系是什么

这是C++初学者大多会遇到或者搞混淆的概念问题具体到你的疑惑分开进行说明:

1、先说c++——它是编程语言
无论在Windows下还是Linux下,C++都只是语言,更具体一点,就是C++语言标准,这里又可以细分为不同的版本,比如C++98,C++03以及最新的C++11(2011年在ISO通过,参考C++11 FAQ中文版)
C++只是一套语言规则标准,我们要利用它来编程,还需要具体的实现。而Visual C++(其中的编译器其实是cl.exe), GCC, Clang, Intel C++, IBM XLC++等等,都是C++标准的具体实现,也就是你所说的编译器。

2、再说MFC——这·是C++编写的类的集合库
MFC,则是类库,也就是为了某一特定目的而事先设计好的类的集合。比如,MFC,Qt,WTL等等是为了应用程序界面设计,boost是为了提高C++的开发效率而事先实现的模板库,OpenGL是为了实现3D渲染而提供的函数库。如果用盖房子来做一个比喻的话,C++是最基础的沙子和水泥,而MFC则是预制板,是事先做好的半成品,从而使得我们可以利用这些预制件更便捷高效地盖好房子(应用程序)
以上这些,是我们盖房子需要的材料,而IDE则是我们用C++写程序所需要的一套工具(代码编辑器,调试器等,就像盖房子需要的起重机,搅拌机,运输机)。

3、在Visual c++——这是工具
Visual C++,Eclipse等等,都只是这一套工具的牌子(就像你的起重机是三一重工的,还是徐工的)。

阅读全文

与代码编译封装相关的资料

热点内容
肺组织压缩15 浏览:267
安卓手机为什么换电话卡没反应 浏览:793
诸子集成pdf 浏览:336
php注册框代码 浏览:714
手机加密好还是不加好好 浏览:814
别克凯越压缩机泵头多钱 浏览:239
组管理命令 浏览:979
海南高德司机端是什么app 浏览:861
pid命令 浏览:888
一天一图学会python可视化 浏览:309
魔兽编辑文本命令串 浏览:497
android中view绘制 浏览:798
安卓机内存删除怎么恢复 浏览:331
Qt环境的编译软件放到linux 浏览:214
联创打印系统怎么连接服务器 浏览:937
杭州行政命令 浏览:160
如何查找服务器日志 浏览:801
加密的钥匙扣怎么写 浏览:579
文件夹更新不了怎么办 浏览:475
压缩机指示灯亮是什么原因 浏览:956