国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言編程常見問題解答之程序的編寫和編譯

2019-11-17 05:41:48
字體:
來源:轉載
供稿:網友
    本章講述在編譯程序時可以使用的一些技術。在本章中,你將學到專業C程序員在日常編程中所使用的一些技巧。你將會發現,無論是對小項目還是大項目,把源代碼分解成幾個文件都是很有益處的。在生成函數庫時,這一點更為重要。你還將學到可以使用的各種存儲模式以及怎樣為不同的項目選擇不同的存儲模式。假如你的程序是由幾個源文件組成的,那么你可以通過一個叫MAKE的工具來治理你的項目(    此外,你還將學到用來解決一個典型的DOS問題的一些技巧,這個問題就是“沒有足夠的內存來運行DOS程序”。本章還討論了擴展內存、擴充內存、磁盤交換區、覆蓋治理程序和DOS擴展程序的用法,提出了解決"RAM阻塞”這一問題的多種方法,你可以從中選擇一種最合適的方法。    18.1  程序是應該寫成一個源文件還是多個源文件?
    假如你的程序確實很小又很緊湊,那么當然應該把所有的源代碼寫在一個“.C”文件中。然而,假如你發現自己編寫了許多函數(非凡是通用函數),那么你就應該把程序分解成幾個源文件(也叫做模塊)。
    把一個程序分解成幾個源文件的過程叫做模塊化程序設計(modular programming)。模塊化程序設計技術提倡用幾個不同的結構緊湊的模塊一起組成一個完整的程序。例如,假如一個程序中有幾種實用函數、屏幕函數和
數據庫函數,你就可以把這些函數分別放在三個源文件中,分別組成實用模塊、屏幕模塊和數據庫模塊。
    把函數放在不同的文件中后,你就可以很方便地在其它程序中重復使用那些通用函數。假如你有一些函數還要供其它程序員使用,那么你可以生成一個與別人共享的函數庫(見18.9)。
    你永遠不必擔心模塊數目“太多”——只要你認為合適,你可以生成很多個模塊。一條好的原則就是保持模塊的緊湊性.即在同一個源文件中只包含那些在邏輯上與其相關的函數。假如你發現自己把幾個沒有關系的函數放在了同一個源文件中,那么最好停下來檢查一下程序的源代碼結構,并且對模塊做一下邏輯上的分解。例如,假如要建立一個通信治理數據庫,你可能需要有這樣一個模塊結構:
---------------------------------------------------------
    模塊名                               內  容
---------------------------------------------------------
    Main.c                             maln()函數
    Screen.c                           屏幕治理函數
    Menus.c                            菜單治理函數
    Database.c                         數據庫治理函數
    Utility.c                          通用功能函數
    Contact.c                          通信處理函數
    Import.c                           記錄輸入函數
    EXPort.c                           記錄輸出函數
    Help.c                             聯機幫助支持函數
----------------------------------------------------------
  請參見:
  18.10  假如一個程序包含多個源文件,怎樣使它們都能正常工作?    18.2  各種存儲模式之間有什么區別?
    DOS用一種段地址結構來編址計算機的內存,每一個物理內存位置都有一個可通過段地址一偏移量的方式來訪問的相關地址。為了支持這種段地址結構,大多數C編譯程序都答應你用以下6種存儲模式來創建程序:
-----------------------------------------------------------------------
  存儲模式              限制                    所用指針
-----------------------------------------------------------------------
  Tiny(微)             代碼、數據和棧一64KB      Near
  Small(小)            代碼一64KB                Near
                       數據和棧一64KB            Near
  Medium(中)           代碼一1MB                 Far
                       數據和棧一64KB            Near
  Compact(緊縮)        代碼一64KB                Near
                       數據和棧一1MB             Far
  Large(大)            代碼一1MB                 Far
                       數據和棧一1MB             Far
  Huge*(巨)            代碼一1MB                 Far
                       數據和棧一1MB             Far
-----------------------------------------------------------------------
    *注重:在Huge存儲模式下,靜態數據(如數組)可以超過64KB,這在其它存儲模式下都不行。
    Tiny存儲模式的限制很嚴(所有的代碼、數據和棧都被限制在64KB中),它通常用來生成"COM"文件。由于內存地址的“安排”方式的限制,Huge模式會帶來顯著的性能損失,因此它很少被使用。
[1] [2] [3] [4] [5] [6] 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 越西县| 安义县| 宜良县| 哈巴河县| 沅江市| 沧源| 徐闻县| 休宁县| 顺义区| 武城县| 鹤山市| 佳木斯市| 威海市| 红安县| 建宁县| 荃湾区| 宁乡县| 大冶市| 克东县| 松原市| 蒙自县| 余江县| 子洲县| 通榆县| 且末县| 淮南市| 乐平市| 晋江市| 漳浦县| 辽源市| 锦州市| 宁陕县| 新余市| 泽普县| 云龙县| 双流县| 武鸣县| 东光县| 文登市| 伊春市| 伊春市|