電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 2344|回復(fù): 2
收起左側(cè)

C 語言編程修煉之二軟件架構(gòu)篇

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-8-19 17:50:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
        C 語言嵌入式系統(tǒng)編程修煉之二:軟件架構(gòu)篇
一、 模塊劃分
        模塊劃分的""是規(guī)劃的意思,意指怎樣合理的將一個很大的軟件劃分為一系列功能獨立的部分合作完成系統(tǒng)的需求。
        C 語言作為一種結(jié)構(gòu)化的程序設(shè)計語言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計中成為一個錯誤,牛頓定律遇到了>相對論)
        C 語言模塊化程序設(shè)計需理解如下概念:
        1)模塊即是一個.c 文件和一個.h 文件的結(jié)合,頭文件(.h)中是對于該模塊接口的聲明
        2)某模塊提供給其它模塊調(diào)用的外部函數(shù)及數(shù)據(jù)需在(.h)文件中冠以extern關(guān)鍵字聲明
        3)模塊內(nèi)的函數(shù)和全局變量需在.c 文件開頭冠以static關(guān)鍵字聲明
        4)永遠(yuǎn)不要在.h 文件中定義變量!定義變量和聲明變量的區(qū)別在于定義會產(chǎn)生內(nèi)存分配的操作,是匯編階段的概念;而聲明則只是告訴包含該聲明的模塊在連接階段從其它模塊尋找外部函數(shù)和變量。如:
        /*module1.h*/
        int a = 5;                                 /* 在模塊1 .h 文件中定義int a */
        /*module1 .c*/
        #include "module1.h"         /* 在模塊1 中包含模塊1 .h 文件 */
        /*module2 .c*/
        #include "module1.h" /* 在模塊2 中包含模塊1 的.h 文件 */
        /*module3 .c*/
        #include "module1.h" /* 在模塊3 中包含模塊1 的.h 文件 */


        以上程序的結(jié)果是在模塊1、2、3 中都定義了整型變量a,a 在不同的模塊中對應(yīng)不同的地址單元,這個世界上從來不需要這樣的程序。正確的做法是:
[size=13.3333px][hide] C 語言編程修煉之二軟件架構(gòu)篇.doc (48 KB, 下載次數(shù): 0) [size=13.3333px][\hide]


回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表