導航:首頁 > 源碼編譯 > 代碼編譯封裝

代碼編譯封裝

發布時間: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等等,都只是這一套工具的牌子(就像你的起重機是三一重工的,還是徐工的)。

閱讀全文

與代碼編譯封裝相關的資料

熱點內容
肯亞程序員 瀏覽:638
新科源碼 瀏覽:659
如何判斷伺服器有沒有帶寬 瀏覽:41
天正建築批量刪除命令 瀏覽:94
cad最下面的一排命令都什麼意思 瀏覽:456
pythonimportcpp 瀏覽:850
W10的系統怎麼給U盤加密 瀏覽:370
華為手機代碼編程教學入門 瀏覽:762
和彩雲沒會員怎樣解壓 瀏覽:634
androidimageview保存 瀏覽:387
新買店鋪什麼伺服器 瀏覽:883
文件夾能直接刻錄嗎 瀏覽:493
androidxmpp刪除好友 瀏覽:969
javac哪個前景好 瀏覽:428
中華英才網app為什麼不能搜索了 瀏覽:660
伺服器域名是什麼意思 瀏覽:52
Linux導出mysql命令 瀏覽:159
無詐建鄴是什麼app 瀏覽:228
python中的雙色球 瀏覽:168
python解釋器里如何換行 瀏覽:413