C語言軟盤
『壹』 如何用c語言對大容量硬碟進行讀寫
7月30日 15:18 大容量指多少呢,還是先看看主板的性能,就算刷了bios後,也未必能支持,看看說明刷了後最大能支持多少。目前市場上主流的是160、250、650g
『貳』 關於C語言
一、C語言的起源
C 語言是1972年由美國的Dennis Ritchie設計發明的, 並首次在UNIX操作系統
的 DEC PDP-11 計算機上使用。 它由早期的編程語言 BCPL( Basic Combind
Programming Language) 發展演變而來。在1970年, AT&T 貝爾實驗室的 Ken
Thompson根據BCPL語言設計出較先進的並取名為 B的語言, 最後導了C 語言的問世。
隨著微型計算機的日益普及, 出現了許多C 語言版本。由於沒有統一的標准,
使得這些C 語言之間出現了一些不一致的地方。為了改變這種情況, 美國國家標准
研究所(ANSI)為C 語言制定了一套ANSI標准, 成為現行的C語言標准。
二、C 語言的特點
C 語言發展如此迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的
功能。許多著名的系統軟體, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。
用C 語言加上一些匯編語言子程序, 就更能顯示C 語言的優勢了, 象PC- DOS 、
WORDSTAR等就是用這種方法編寫的。歸納起來C 語言具有下列特點:
1. C是中級語言
它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以象
匯編語言一樣對位、位元組和地址進行操作, 而這三者是計算機最基本的工作單元。
2. C是結構式語言
結構式語言的顯著特點是代碼及數據的分隔化, 即程序的各個部分除了必要的
信息交流外彼此獨立。這種結構化方式可使程序層次清晰, 便於使用、維護以及調
試。C 語言是以函數形式提供給用戶的, 這些函數可方便的調用, 並具有多種循
環、條件語句控製程序流向, 從而使程序完全結構化。
3. C語言功能齊全
C 語言具有各種各樣的數據類型, 並引入了指針概念, 可使程序效率更高。另
外C 語言也具有強大的圖形功能, 支持多種顯示器和驅動器。而且計算功能、邏輯
判斷功能也比較強大, 可以實現決策目的。
4. C語言適用范圍大
C 語言還有一個突出的優點就是適合於多種操作系統, 如DOS、UNIX,也適用於
多種機型。
三、 Turbo C 概述
1 Turbo C 的產生與發展
Turbo C 是美國Borland 公司的產品,Borland公司是一家專門從事軟體開發、
研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo
Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。該公司在1987年首次推出Turbo
C 1.0 產品, 其中使用了全然一新的集成開發環境, 即使用了一系列下拉式菜單,
將文本編輯、程序編譯、連接以及程序運行一體化, 大大方便了程序的開發。1988
年, Borland 公司又推出Turbo C1.5版本, 增加了圖形庫和文本窗口函數庫等, 而
Turbo C 2.0 則是該公司1989年出版的。Turbo C2.0在原來集成開發環境的基礎上
增加了查錯功能, 並可以在Tiny模式下直接生成.COM (數據、代碼、堆棧處在同一
64K 內存中) 文件。還可對數學協處理器 (支持8087/80287/80387等)進行模擬。
Borland 公司後來又推出了面向對象的程序軟體包Turbo C+ + , 它繼承發展
Turbo C 2.0 的集成開發環境, 並包含了面向對象的基本思想和設計方法。
1991年為了適用Microsoft 公司的Windows 3.0 版本, Borland 公司又將Turbo
C++ 作了更新, 即Turbo C 的新一代產品Borlandc C++也已經問世了。
2 Turbo C 2.0基本配置要求
Turbo C 2.0可運行於IBM-PC系列微機, 包括XT, AT及IBM 兼容機。 此時要求
DOS 2.0或更高版本支持, 並至少需要448K的RAM, 可在任何彩、單色80列監視器上
運行。支持數學協處理器晶元, 也可進行浮點模擬, 這將加快程序的執行。
3 Turbo C 2.0內容簡介
Turbo C 2.0有六張低密軟盤(或兩張高密軟盤)。下面對Turbo C 2.0的主要文
件作一簡單介紹:
INSTALL.EXE 安裝程序文件
TC.EXE 集成編譯
TCINST.EXE 集成開發環境的配置設置程序
TCHELP.TCH 幫助文件
THELP.COM 讀取TCHELP.TCH的駐留程序
README 關於Turbo C的信息文件
TCCONFIG.EXE 配置文件轉換程序
MAKE.EXE 項目管理工具
TCC.EXE 命令行編譯
TLINK.EXE Turbo C系列連接器
TLIB.EXE Turbo C系列庫管理工具
C0?.OBJ 不同模式啟動代碼
C?.LIB 不同模式運行庫
GRAPHICS.LIB 圖形庫
EMU.LIB 8087模擬庫
FP87.LIB 8087庫
*.H Turbo C頭文件
*.BGI 不同顯示器圖形驅動程序
*.C Turbo C例行程序(源文件)
其中: 上面的?分別為:
T Tiny(微型模式)
S Small(小模式)
C Compact(緊湊模式)
M Medium(中型模式)
L Large(大模式)
H Huge(巨大模式)
四、 Turbo C 2.0的安裝和啟動
Turbo C 2.0的安裝非常簡單, 只要將1#盤插入A驅動器中, 在DOS的"A>" 下鍵
入:
A>INSTALL
即可, 此時屏幕上顯示三種選擇:
1. 在硬碟上創造一個新目錄來安裝整個Turbo C 2.0系統。
2. 對Turbo C 1.5更新版本。
這樣的安裝將保留原來對選擇項、顏色和編輯功能鍵的設置。
3. 為只有兩個軟盤而無硬碟的系統安裝Turbo C 2.0。
這里假定按第一種選擇進行安裝, 只要在安裝過程中按對盤號的提示, 順序插
入各個軟盤, 就可以順利地進行安裝, 安裝完畢將在C盤根目錄下建立一個TC 子目
錄, TC下還建立了兩個了目錄LIB和INCLUDE, LIB子目錄中存放庫文件, INCLUDE
子目錄中存放所有頭文件。
運行Turbo C 2.0時, 只要在TC 子目錄下鍵入TC並回車即可進入Turbo C 2. 0
集成開發環境。
五、 Turbo C 2.0集成開發環境的使用
進入Turbo C 2.0集成開發環境中後, 屏幕上顯示:
——————————————————————————————
File Edit Run Compile Project Options Debug Break/watch
┌————————————Edit——————————————┐
│ Line 1 Col 1 Insert Indent Tab File Unindent c:NONAME.C│
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│—————————Message——————————————— │
│ │
│ │
└————————————————————————————┘
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu
———————————————————————————————
其中頂上一行為Turbo C 2.0 主菜單, 中間窗口為編輯區, 接下來是信息窗
口, 最底下一行為參考行。這四個窗口構成了Turbo C 2.0的主屏幕, 以後的編程、
編譯、調試以及運行都將在這個主屏幕中進行。下面詳細介紹主菜單的內容。
1 主菜單
主菜單 在Turbo C 2.0主屏幕頂上一行, 顯示下列內容:
File Edit Run Compile Project Options Debug Break/watch
除Edit外, 其它各項均有子菜單, 只要用Alt加上某項中第一個字母(即大寫字
母), 就可進入該項的子菜單中。
(1)、File(文件)菜單
按Alt+F可進入File菜單, 該菜單包括以下內容:
.Load(載入)
裝入一個文件, 可用類似DOS的通配符(如*.C)來進行列表選擇。也可裝入其它
擴展名的文件, 只要給出文件名(或只給路徑)即可。該項的熱鍵為F3, 即只要在主
菜單中按F3即可進入該項, 而不需要先進入File菜單再選此項。
.Pick(選擇)
將最近裝入編輯窗口的8個文件列成一個表讓用戶選擇, 選擇後將該程序裝入
編輯區, 並將游標置在上次修改過的地方。其熱健為Alt-F3。
.New(新文件)
說明文件是新的, 預設文件名為NONAME.C, 存檔時可改名。
.Save(存檔)
將編輯區中的文件存檔, 若文件名是NONAME.C時, 將詢問是否更改文件名, 其
熱鍵為F2。
.Write to(存檔)
可由用戶給出文件名將編輯區中的文件存檔, 若該文件已存在, 則詢問要不要
覆蓋。
.Directory(目錄)
顯示目錄及目錄中的文件, 並可由用戶選擇。
.Change dir(改變目錄)
顯示當前目錄, 用戶可以改變顯示的目錄。
.Os shell(暫時退出)
暫時退出Turbo C 2.0到DOS提示符下, 此時可以運行DOS 命令, 若想回到
Turbo C 2.0中, 只要在DOS狀態下鍵入EXIT即可。
.Quit(退出)
退出Turbo C 2.0, 返回到DOS操作系統中, 其熱鍵為Alt+X。
說明:
以上各項可用游標鍵移動色棒進行選擇, 回車則執行。也可用每一項的第一個
大寫字母直接選擇。若要退到主菜單或從它的下一級菜單列表框退回均可用Esc鍵,
Turbo C 2.0所有菜單均採用這種方法進行操作, 以下不再說明。
(2)、Edit(編輯)菜單
按Alt+E可進入編輯菜單, 若再回車, 則游標出現在編輯窗口, 此時用戶可以
進行文本編輯。
編輯方法基本與wordstar相同, 可用F1鍵獲得有關編輯方法的幫助信息。
與編輯有關的功能鍵如下:
F1 獲得Turbo C 2.0編輯命令的幫助信息
F5 擴大編輯窗口到整個屏幕
F6 在編輯窗口與信息窗口之間進行切換
F10 從編輯窗口轉到主菜單
編輯命令簡介:
PageUp 向前翻頁
PageDn 向後翻頁
Home 將游標移到所在行的開始
End 將游標移到所在行的結尾
Ctrl+Y 刪除游標所在的一行
Ctrl+T 刪除游標所在處的一個詞
Ctrl+KB 設置塊開始
Ctrl+KK 設置塊結尾
Ctrl+KV 塊移動
Ctrl+KC 塊拷貝
Ctrl+KY 塊刪除
Ctrl+KR 讀文件
Ctrl+KW 存文件
Ctrl+KP 塊文件列印
Ctrl+F1 如果游標所在處為Turbo C 2.0庫函數, 則獲得有關該函數的幫助
信息
Ctrl+Q[ 查找Turbo C 2.0雙界符的後匹配符
Ctrl+Q] 查找Turbo C 2.0雙界符的前匹配符
說明:
a. Turbo C 2.0的雙界符包括以下幾種符號:
花括符 {和}
尖括符 <和>
圓括符 (和)
方括符 [和]
注釋符 /*和*/
雙引號 "
單引號 '
b. Turbo C 2.0在編輯文件時還有一種功能, 就是能夠自動縮進, 即游標定位
和上一個非空字元對齊。在編輯窗口中, Ctrl+OL為自動縮進開關的控制鍵。
(3)Run(運行)菜單
按Alt+R可進入Run菜單, 該菜單有以下各項:
.Run(運行程序)
運行由Project/Project name項指定的文件名或當前編輯區的文件。如果對上
次編譯後的源代碼未做過修改, 則直接運行到下一個斷點(沒有斷點則運行到結束)。
否則先進行編譯、連接後才運行, 其熱鍵為Ctrl+F9。
.Program reset(程序重啟)
中止當前的調試, 釋放分給程序的空間, 其熱鍵為Ctrl+F2。
.Go to cursor(運行到游標處)
調試程序時使用, 選擇該項可使程序運行到游標所在行。游標所在行必須為一
條可執行語句, 否則提示錯誤。其熱鍵為F4。
.Trace into(跟蹤進入)
在執行一條調用其它用戶定義的子函數時, 若用Trace into項, 則執行長條將
跟蹤到該子函數內部去執行, 其熱鍵為F7。
.Step over(單步執行)
執行當前函數的下一條語句, 即使用戶函數調用, 執行長條也不會跟蹤進函數
內部, 其熱鍵為F8。
.User screen(用戶屏幕)
顯示程序運行時在屏幕上顯示的結果。其熱鍵為Alt+F5。
(4)、Compile(編譯)菜單
按Alt+C可進入Compile菜單, 該菜單有以下幾個內容:
.Compile to OBJ(編譯生成目標碼)
將一個C源文件編譯生成.OBJ目標文件, 同時顯示生成的文件名。其熱鍵為
Alt+F9。
.Make EXE file(生成執行文件)
此命令生成一個.EXE的文件, 並顯示生成的.EXE文件名。其中.EXE文件名是下
面幾項之一。
a. 由Project/Project name說明的項目文件名。
b. 若沒有項目文件名, 則由Primary C file說明的源文件。
c. 若以上兩項都沒有文件名, 則為當前窗口的文件名。
.Link EXE file(連接生成執行文件)
把當前.OBJ文件及庫文件連接在一起生成.EXE文件。
.Build all(建立所有文件)
重新編譯項目里的所有文件, 並進行裝配生成.EXE文件。該命令不作過時檢查
(上面的幾條命令要作過時檢查, 即如果目前項目里源文件的日期和時間與目標文
件相同或更早, 則拒絕對源文件進行編譯)。
.Primary C file(主C文件)
當在該項中指定了主文件後, 在以後的編譯中, 如沒有項目文件名則編譯此項
中規定的主C文件, 如果編譯中有錯誤, 則將此文件調入編輯窗口, 不管目前窗口
中是不是主C文件。
.Get info(獲得有關當前路徑、源文件名、源文件位元組大小、編譯中的錯誤數
目、可用空間等信息。
(5)、Project(項目)菜單
按Alt+P可進入Project菜單, 該菜單包括以下內容:
.Project name(項目名)
項目名具有.PRJ的擴展名, 其中包括將要編譯、連接的文件名。例如有一個程
序由file1.c, file2.c, file3.c組成, 要將這3個文件編譯裝配成一個file.exe的
執行文件, 可以先建立一個file.prj的項目文件, 其內容如下:
file1.c
file2.c
file3.c
此時將file.prj放入Project name項中, 以後進行編譯時將自動對項目文件中
規定的三個源文件分別進行編譯。然後連接成file.exe文件。
如果其中有些文件已經編譯成.OBJ文件, 而又沒有修改過, 可直接寫上.OBJ擴
展名。此時將不再編譯而只進行連接。
例如: file1.obj
file2.c
file3.c
將不對file1.c進行編譯, 而直接連接。
說明:
當項目文件中的每個文件無擴展名時, 均按源文件對待, 另外, 其中的文件也
可以是庫文件, 但必須寫上擴展名.LIB。
.Break make on(中止編譯)
由用戶選擇是否在有Warining(警告)、Errors(錯誤)、Fatal Errors( 致命錯
誤)時或Link(連接)之前退出Make編譯。
.Auto dependencies(自動依賴)
當開關置為on, 編譯時將檢查源文件與對應的.OBJ文件日期和時間, 否則不進
行檢查。
.Clear project(清除項目文件)
清除Project/Project name中的項目文件名。
.Remove messages(刪除信息)
把錯誤信息從信息窗口中清除掉。
(6)、Options(選擇菜單)
按Alt+O可進入Options菜單, 該菜單對初學者來說要謹慎使用。
.Compiler(編譯器)
本項選擇又有許多子菜單, 可以讓用戶選擇硬體配置、存儲模型、調試技術、
代碼優化、對話信息控制和宏定義。這些子菜單如下:
Model
共有Tiny, small, medium, compact, large, huge 六種不同模式可由同戶選
擇。
Define
打開一個宏定義框, 同戶可輸入宏定義。多重定義可同分號, 賦值可用等號。
Code generation
它又有許多任選項, 這些任選項告訴編譯器產生什麼樣的目標代碼。
Calling convention 可選擇C或Pascal方式傳遞參數。
Instruction set 可選擇8088/8086或80186/80286指令系列。
Floating point 可選擇模擬浮點、數學協處理器浮點或無浮點運算。
Default char type 規定char的類型。
Alignonent 規定地址對准原則。
Merge plicate strings 作優化用, 將重復的字元串合並在一起。
Standard stack frame 產生一個標準的棧結構。
Test stack overflow 產生一段程序運行時檢測堆棧溢出的代碼。
Line number 在.OBJ文件中放進行號以供調試時用。
OBJ debug information 在.OBJ文件中產生調試信息。
Optimization
Optimize for 選擇是對程序小型化還是對程序速度進行優
化處理。
Use register variable 用來選擇是否允許使用寄存器變數。
Register optimization 盡可能使用寄存器變數以減少過多的取數操
作。
Jump optimization 通過去除多餘的跳轉和調整循環與開關語句
的辦法, 壓縮代碼。
Source
Indentifier length 說明標識符有效字元的個數, 默認為32個。
Nested comments 是否允許嵌套注釋。
ANSI keywords only 是只允許ANSI關鍵字還是也允許Turbo C
2.0關鍵字
Error
Error stop after 多少個錯誤時停止編譯, 默認為25個。
Warning stop after 多少個警告錯誤時停止編譯, 默認為100個。
Display warning
Portability warning 移植性警告錯誤。
ANSI Violations 侵犯了ANSI關鍵字的警告錯誤。
Common error 常見的警告錯誤。
Less common error 少見的警告錯誤。
Names 用於改變段(segment)、 組( group) 和類
(class)的名字, 默認值為CODE,DATA,BSS。
.Linker(連接器)
本菜單設置有關連接的選擇項, 它有以下內容:
Map file menu 選擇是否產生.MAP文件。
Initialize segments 是否在連接時初始化沒有初始化的段。
Devault libraries 是否在連接其它編譯程序產生的目標文件時去尋
找其預設庫。
Graphics library 是否連接graphics庫中的函數。
Warn plicate symbols 當有重復符號時產生警告信息。
Stack warinig 是否讓連接程序產生No stack的警告信息。
Case-sensitive link 是否區分大、小寫字。
.Environment(環境)
本菜單規定是否對某些文件自動存檔及製表鍵和屏幕大小的設置
Message tracking
Current file 跟蹤在編輯窗口中的文件錯誤。
All files 跟蹤所有文件錯誤。
Off 不跟蹤。
Keep message 編譯前是否清除Message窗口中的信息。
Config auto save 選on時, 在Run, Shell或退出集成開發環境之前,
如果Turbo C 2.0的配置被改過, 則所做的改動
將存入配置文件中。選off時不存。
Edit auto save 是否在Run或Shell之前, 自動存儲編輯的源文件。
Backup file 是否在源文件存檔時產生後備文件(.BAK文件)。
Tab size 設置製表鍵大小, 默認為8。
Zoomed windows 將現行活動窗口放大到整個屏幕, 其熱鍵為F5。
Screen size 設置屏幕文本大小。
.Directories(路徑)
規定編譯、連接所需文件的路徑, 有下列各項:
Include directories 包含文件的路徑, 多個子目錄用";"分開。
Library directories 庫文件路徑, 多個子目錄用";"分開。
Output directoried 輸出文件(.OBJ, .EXE, .MAP文件)的目錄。
Turbo C directoried Turbo C 所在的目錄。
Pick file name 定義載入的pick文件名, 如不定義則從current
pick file中取。
.Arguments(命令行參數)
允許用戶使用命令行參數。
.Save options(存儲配置)
保存所有選擇的編譯、連接、調試和項目到配置文件中, 預設的配置文件為
TCCONFIG.TC。
.Retrive options
裝入一個配置文件到TC中, TC將使用該文件的選擇項。
(7)、Debug(調試)菜單
按Alt+D可選擇Debug菜單, 該菜單主要用於查錯, 它包括以下內容:
Evaluate
Expression 要計算結果的表達式。
Result 顯示表達式的計算結果。
New value 賦給新值。
Call stack 該項不可接觸。而在Turbo C debuger 時用於檢
查堆棧情況。
Find function 在運行Turbo C debugger時用於顯示規定的函數。
Refresh display 如果編輯窗口偶然被用戶窗口重寫了可用此恢復
編輯窗口的內容。
(8)、Break/watch(斷點及監視表達式)
按Alt+B可進入Break/watch菜單, 該菜單有以下內容:
Add watch 向監視窗口插入一監視表達式。
Delete watch 從監視窗口中刪除當前的監視表達式。
Edit watch 在監視窗口中編輯一個監視表達式。
Remove all watches 從監視窗口中刪除所有的監視表達式。
Toggle breakpoint 對游標所在的行設置或清除斷點。
Clear all breakpoints 清除所有斷點。
View next breakpoint 將游標移動到下一個斷點處。
六 Turbo C 2.0的配置文件
所謂配置文件是包含Turbo C 2.0有關信息的文件, 其中存有編譯、連接的選
擇和路徑等信息。
可以用下述方法建立Turbo C 2.0的配置:
1. 建立用戶自命名的配置文件
可以從Options菜單中選擇Options/Save options命令, 將當前集成開發環境
的所有配置存入一個由用戶命名的配置文件中。下次啟動TC時只要在DOS下鍵入:
tc/c<用戶命名的配置文件名>
就會按這個配置文件中的內容作為Turbo C 2.0的選擇。
2. 若設置Options/Environment/Config auto save 為on, 則退出集成開發環
境時, 當前的設置會自動存放到Turbo C 2.0配置文件TCCONFIG.TC中。Turbo C 在
啟動時會自動尋找這個配置文件。
3. 用TCINST設置Turbo C的有關配置, 並將結果存入TC.EXE中。Turbo C 在啟
動時, 若沒有找到配置文件, 則取TC.EXE中的預設值。
『叄』 C語言是什麼,我要怎麼學
C 語言是1972年由美國的Dennis Ritchie設計發明的, 並首次在UNIX操作系統 的 DEC PDP-11 計算機上使用。 它由早期的編程語言 BCPL( Basic Combind Programming Language) 發展演變而來。在1970年, AT&T 貝爾實驗室的 Ken Thompson根據BCPL語言設計出較先進的並取名為 B的語言, 最後導了C 語言的問世。
隨著微型計算機的日益普及, 出現了許多C 語言版本。由於沒有統一的標准, 使得這些C 語言之間出現了一些不一致的地方。為了改變這種情況, 美國國家標准 研究所(ANSI)為C 語言制定了一套ANSI標准, 成為現行的C語言標准。
C 語言發展如此迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的 功能。許多著名的系統軟體, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。 用C 語言加上一些匯編語言子程序, 就更能顯示C 語言的優勢了, 象PC- DOS 、 WORDSTAR等就是用這種方法編寫的。歸納起來C 語言具有下列特點:
1. C是中級語言
它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以象 匯編語言一樣對位、位元組和地址進行操作, 而這三者是計算機最基本的工作單元。
2. C是結構式語言
結構式語言的顯著特點是代碼及數據的分隔化, 即程序的各個部分除了必要的 信息交流外彼此獨立。這種結構化方式可使程序層次清晰, 便於使用、維護以及調 試。C 語言是以函數形式提供給用戶的, 這些函數可方便的調用, 並具有多種循 環、條件語句控製程序流向, 從而使程序完全結構化。
3. C語言功能齊全
C 語言具有各種各樣的數據類型, 並引入了指針概念, 可使程序效率更高。另 外C 語言也具有強大的圖形功能, 支持多種顯示器和驅動器。而且計算功能、邏輯 判斷功能也比較強大, 可以實現決策目的。
4. C語言適用范圍大
C 語言還有一個突出的優點就是適合於多種操作系統, 如DOS、UNIX,也適用於 多種機型。
Turbo C 是美國Borland 公司的產品,Borland公司是一家專門從事軟體開發、 研製的大公司。該公司相繼推出了一套 Turbo系列軟體, 如Turbo BASIC, Turbo Pascal, Turbo Prolog, 這些軟體很受用戶歡迎。該公司在1987年首次推出Turbo C 1.0 產品, 其中使用了全然一新的集成開發環境, 即使用了一系列下拉式菜單, 將文本編輯、程序編譯、連接以及程序運行一體化, 大大方便了程序的開發。1988 年, Borland 公司又推出Turbo C1.5版本, 增加了圖形庫和文本窗口函數庫等, 而 Turbo C 2.0 則是該公司1989年出版的。Turbo C2.0在原來集成開發環境的基礎上 增加了查錯功能, 並可以在Tiny模式下直接生成.COM (數據、代碼、堆棧處在同一 64K 內存中) 文件。還可對數學協處理器 (支持8087/80287/80387等)進行模擬。
Borland 公司後來又推出了面向對象的程序軟體包Turbo C++, 它繼承發展 Turbo C 2.0 的集成開發環境, 並包含了面向對象的基本思想和設計方法。
1991年為了適用Microsoft 公司的Windows 3.0 版本, Borland 公司又將Turbo C++ 作了更新, 即Turbo C 的新一代產品Borlandc C++也已經問世了。
1.3.2 Turbo C 2.0基本配置要求
Turbo C 2.0可運行於IBM-PC系列微機, 包括XT, AT及IBM 兼容機。 此時要求 DOS 2.0或更高版本支持, 並至少需要448K的RAM, 可在任何彩、單色80列監視器上 運行。支持數學協處理器晶元, 也可進行浮點模擬, 這將加快程序的執行。
1.3.3 Turbo C 2.0內容簡介
Turbo C 2.0有六張低密軟盤(或兩張高密軟盤)。下面對Turbo C 2.0的主要文 件作一簡單介紹:
INSTALL.EXE 安裝程序文件
TC.EXE 集成編譯
TCINST.EXE 集成開發環境的配置設置程序
TCHELP.TCH 幫助文件
THELP.COM 讀取TCHELP.TCH的駐留程序
README 關於Turbo C的信息文件
TCCONFIG.EXE 配置文件轉換程序
MAKE.EXE 項目管理工具
TCC.EXE 命令行編譯
TLINK.EXE Turbo C系列連接器
TLIB.EXE Turbo C系列庫管理工具
C0?.OBJ 不同模式啟動代碼
C?.LIB 不同模式運行庫
GRAPHICS.LIB 圖形庫
EMU.LIB 8087模擬庫
FP87.LIB 8087庫
*.H Turbo C頭文件
*.BGI 不同顯示器圖形驅動程序
*.C Turbo C例行程序(源文件)
其中: 上面的?分別為:
T Tiny(微型模式)
S Small(小模式)
C Compact(緊湊模式)
M Medium(中型模式)
L Large(大模式)
H Huge(巨大模式)
Turbo C程序的一般組成部分
Turbo C 2.0 象其它語言一樣按其規定的格式和提供的語句由用戶編寫應用
程序。請看下面一段Turbo C源程序。
例1:
/*Example program of Turbo C*/
#include <stdio.h> /*包含文件說明*/
void lgc(void); /*子函數說明*/
char answer; /*定義全程變數*/
int main() /*主函數定義*/
{
char a; /*定義局部變數*/
clrscr();
gotoxy(12,3);
puts("Welcome to use Turbo C2.0!");
gotoxy(15, 13);
printf("<Esc>--Exit");
gotoxy(15, 15);
printf("<CR>--Continue");
while(1)
{
a=getch();
if(a==27)
break;
if(a==13)
{
lgc();
if(answer=='y'||answer=='Y')
{
gotoxy(23,14);
puts("Please Write to the Company");
getch();
break;
}
}
}
return(0);
}
void lgc(void)
{
clrscr();
gotoxy(12,8);
printf("The Excellent Selection!");
gotoxy(21,12);
printf("Do you have any question?(Y/N)");
answer=getche();
}
由例子程序可以看出, Turbo C源程序主要有以下幾個特點:
1. 程序一般用小寫字母書寫;
2. 大多數語句結尾必須要用";"作為終止符, 否則Turbo C 不認為該語句結
束;
3. 每個程序必須有一個而且只能有一個稱作主函數的main()函數;
4. 每個程序體 (主函數和每個子函數, 如上例中的main()函數和sub()函數)
必須用一對花括弧"{"和"}"括起來;
5. 一個較完整的程序大致包括:包含文件(一組#include<*.h>語句)、用戶
函數說明部分、全程變數定義、主函數和若乾子函數組成。在主函數和子函數中
又包括局部變數定義、若干個Turbo C庫函數、控制流程語句、 用戶函數的調用
語句等;
6. 注釋部分包含在"/*"和"*/"之間, 在編譯時它被Turbo C編譯器忽略。
說明:
1. 象其它一些語言一樣, Turbo C的變數在使用之前必須先定義其數據類型,
未經定義的變數不能使用。定義變數類型應在可執行語句前面, 如上例main()函
數中的第一條語句就是變數定義語句, 它必須放在第一各執行語句clrscr()前面。
2. 在Turbo C中, 大、小寫字母是有區別的, 相同字母的大、小寫代表不同
的變數。
3. Turbo C程序的書寫格式非常靈活, 沒有嚴格限制。
例1的主函數可寫成:
main(){char c; clrscr(); gotoxy(12,3);
puts("Welcome to use Turbo C2.0!"); gotoxy(15,13);
printf("<CR>--Continue"); gotoxy(15,15);...}
這樣寫語法上沒有錯誤, 但閱讀起來不方便, 同時也使得程序層次不明確。
作者建議用Turbo C編程時, 一行一條語句, 遇到嵌套語句向後縮進, 必要時對
程序加上注釋行。這樣可以便程序結構清楚、易於閱讀、維護和修改。
通過以上介紹, 可以得出Turbo C源程序的一般形式為:
包含文件
子函數類型說明
全程變數定義
main()
{
局部變數定義
<程序體>
}
sub1()
{
局部變數定義
<程序體>
}
sub2()
{
局部變數定義
<程序體>
}
.
.
.
subN()
{
局部變數定義
<程序體>
}
其中sub1(), ..., subN()代表用戶定義的子函數, 程序體指Turbo C 2.0
提供的任何庫函數調用語句、控制流程語句或其它用子函數調用語句等。
整型(int)
一、整型數說明
加上不同的修飾符, 整型數有以下幾種類型;
signed short int 有符號短整型數說明。簡寫為short或int, 字長為2
位元組共16位二進制數, 數的范圍是-32768~32767。
signed long int 有符號長整型數說明。簡寫為long, 字長為4位元組共
32位二進制數, 數的范圍是-2147483648~2147483647。
unsigned short int 無符號短整型數說明。簡寫為unsigned int, 字長
為2位元組共16位二進制數, 數的范圍是0~65535。
unsigned long int 無符號長整型數說明。簡寫為unsigned long, 字長
為4位元組共32位二進制數, 數的范圍是0~4294967295。
二、整型變數定義
可以用下列語句定義整型變數
int a, b; /*a、b被定義為有符號短整型變數*/
unsigned long c; /*c被定義為無符號長整型變數*/
三、整型常數表示
按不同的進制區分, 整型常數有三種表示方法:
十進制數: 以非0開始的數
如:220, -560, 45900
八進制數: 以0開始的數
如:06; 0106, 05788
十六進制數:以0X或0x開始的數
如:0X0D, 0XFF, 0x4e
另外, 可在整型常數後添加一個"L"或"l"字母表示該數為長整型數, 如22L,
0773L, 0Xae4l。
2.2 浮點型(float)
一、浮點數說明
Turbo C中有以下兩種類型的浮點數:
float 單浮點數。字長為4 個位元組共32 位二進制數, 數的范圍是
3.4x10-38E~3.4x10+38E。
double 雙浮點數。字長為 8個位元組共 64 位二進制數, 數的范圍是
1.7x10-308E~1.7x10+308E。
說明:
浮點數均為有符號浮點數, 沒有無符號浮點數。
二、浮點型變數定義
可以用下列語句定義浮點型變數:
float a, f; /*a, f被定義為單浮點型變數*/
double b; /*b被定義為雙浮點型變數*/
三、浮點常數表示
例如: +29.56, -56.33, -6.8e-18, 6.365
說明:
1. 浮點常數只有一種進制(十進制)。
2. 所有浮點常數都被默認為double。
3. 絕對值小於1的浮點數, 其小數點前面的零可以省略。如:0.22可寫為.22,
-0.0015E-3可寫為-.0015E-3。
4. Turbo C默認格式輸出浮點數時, 最多隻保留小數點後六位。
2.3 字元型(char)
加上不同的修飾符, 可以定義有符號和無符號兩種類型的字元型變數, 例如:
char a: /*a被定義為有符號字元變數*/
unsigned char l; /*l被定義為無符號字元變數*/
字元在計算機中以其ASCII碼方式表示, 其長度為1個位元組, 有符號字元型數
取值范圍為-128~127, 無符號字元型數到值范圍是0~255。因此在Turbo C語言中,
字元型數據在操作時將按整型數處理, 如果某個變數定義成char, 則表明該變數
是有符號的, 即它將轉換成有符號的整型數。
Turbo C中規定對ASCII碼值大於0x80的字元將被認為是負數。例如ASCII 值
為0x8c的字元, 定義成char時, 被轉換成十六進制的整數0xff8c 。 這是因當
ASCII碼值大於0x80時, 該位元組的最高位為1, 計算機會認為該數為負數, 對於
0x8c表示的數實際上是-74(8c的各位取反再加1), 而-74 轉換成兩位元組整型數並
在計算機中表示時就是0xff8c( 對0074 各位取反再加1) 。 因此只有定義為
unsigned char 0x8c轉換成整型數時才是8c。這一點在處理大於0x80的ASCII碼
字元時(例如漢字碼)要特別注意。一般漢字均定義為unsigned char(在以後的程
序中會經常碰到)。
另外, 也可以定義一個字元型數組(關於數組後面再作詳細介紹), 此時該數
組表示一個字元串。
例如:
char str[10];
計算機在編譯時, 將留出連續10個字元的空間, 即str[0]到str[9]共10個變
量, 但只有前9個供用戶使用。第10個str[9]用來存放字元串終止符NULL即"\0",
但終止符是編編譯程序自動加上的, 這一點應特別注意。
二、字元常數表示
能用符號表示的字元可直接用單引號括起來表示, 如'a', '9', 'Z', 也可用
該字元的ASCII碼值表示, 例如十進制數85表示大寫字母'U', 十六進制數0x5d表示
']', 八進制數0102表示大寫字母'B'。
一些不能用符號表示的控制符, 只能用ASCII碼值來表示, 如十進制數10 表示
換行, 下六進制數0x0d表示回車, 八進制數033表示Esc。Turbo C2.0中也有另外一
種表示表示方法, 如'\033'表示Esc, 這里'\ 0' 符號後面的數字表示十六進制的
ASCII值當然這種表示方法也適用於可睦接用符號表示的字元。
另外, Turbo C2.0中有些常用的字元用以下特殊規定來表示:
規定符 等價於 含義
'\f' '\X0C' 換頁
'\r' '\X0D' 回車
'\t' '\X09' 製表鍵
'\n' '\X0A' 換行
'\\' '\X5C' \符
'\'' '\X27' '符
'\"' '\X22' "符
對於字元串常量, 一般用雙引號括起來表示, 如"Hello Turbo C2.0"。
2.4 指針型(*)
指針是一種特殊的數據類型, 在其它語言中一般沒有。指針是指向變數的地址,
實質上指針就是存貯單元的地址。 根據所指的變數類型不同, 可以是整型指針
(int *)、浮點型指針(float *)、字元型指針(char *)、結構指針(struct *)和聯
合指針(union *)(結構指針和聯合指針將在第4節中介紹)。
2.5 無值型(void)
無值型位元組長度為0, 主要有兩個用途: 一是明確地表示一個函數不返回任何
值; 一是產生一個同一類型指針(可根據需要動態分配給其內存)。
例如:
void *buffer; /*buffer被定義為無值型指針*/
關鍵字
所謂關鍵字就是已被Turbo C2.0本身使用, 不能作其它用途使用的字。例如關
鍵字不能用作變數名、函數名等。
Turbo C2.0有以下關鍵字:
Turbo C2.0擴展的共11個
asm _cs _ds _es _ss cdecl
far near huge interrupt pascal
由ANSI標準定義的共32個
auto double int struct break else
long switch case enum register typedef
char extern return union const float
short unsigned continue for signed void
default goto sizeof volatile do if
while static
3.2 標識符
所謂標識符是指常量、變數、語句標號以及用戶自定義函數的名稱。 Turbo C
2.0標識符的定義十分靈活。作為標識符必須滿足以下規則:
1. 所有標識符必須由一個字母(a~z, A~Z)或下劃線(_)開頭;
2. 標識符的其它部分可以用字母、下劃線或數字(0~9)組成;
3. 大小寫字母表示不同意義, 即代表不同的標識符;
4. 標識符只有前32個字元有效;
5. 標識符不能使用Turbo C2.0的關鍵字。
下面舉出幾個正確和不正確的標識符:
正確 不正確
smart 5smart
_decision bomb?
key_board key.board
FLOAT float
變數說明
Turbo C2.0規定所有變數在使用前都必須中以說明。一條變數說明語句由數據
類型和其後的一個或多個變數名組成。變數說明的形式如下:
類型 <變數表>;
這里類型是指Turbo C2.0的有效數據類型。變數表是一個或多個標識符名, 每
個標識符之間用","分隔。
例如:
int i, j, k; unsigned char c, str[5], *p;
4.2 變數種類
變數可以在程序中三個地方說明: 函數內部、函數的參數定義中或所有的函數
外部。根據所定義位置的不同, 變數可分為局部變數、形式參數和全程變數。
一、局部變數
局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進
行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上
從來不用。
局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這
個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自
動消失。
二、形式參數
形式參數是指在函數名後面的小括弧里定義的變數, 用於接受來自調用函數的
參數。形式參數在函數內部可以象其它局部變數那樣來作用。
例如:
puthz(int x, int y, int color, char *p)
{
int i, j, k; /*定義局部變數*/
<程序體>
}
其中x, y, color, *p為函數的形式參數, 不需要再進行說明就可在該函數內
直使用。
三、全程變數
全程變數是指在所有函數之外說明的變數, 它在整個程序內部者是"可見的",
可以被任何一個函數使用, 並且在整個程序的運行中都保留其值。全程變數只要滿
足在使用它以前和函數以外這兩個條件, 可在程序的任何位置進行說明, 習慣上通
常在程序的主函數前說明。
例如:
#include<stdio.h>
int test; /*定義全程變數*/
void f1(int x, float y); /*子函數說明*/
void f2(void); /*子函數說明*/
main()
{
test=5; /*給全程變數賦值*/
f1(20, 5.5); /*調用有形式參數的子函數f1()*/
/*test的值變成115*/
f2(); /*調用f2(), test的值變為1150*/
}
void f1(int x, float y)
{
float z; /*z定義為局部變數*/
z=x*y; /*計算*/
test=test+z;
}
void f2(void)
{
int count=10; /*定義局部變數並初始化*/
test=test*count;
}
由於全程變數可被整個程序內的任何一個函數使用, 所以可作為函數之間傳遞
參數的手段, 但全程變數太多時, 內存開銷變大。
4.3 變數存儲類型
Turbo C2.0支持四種變數存儲類型。說明符如下:
auto static extern register
下面分別來介紹。
一、auto
auto稱為自動變數, 已在前面作了介紹, 這里不再重復。
二、static
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1. 靜態局部變數
它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。
2. 靜態全程變數
Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊
的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態
全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,
而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要
被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用
extern來說明。
例如:
文件1為file1.c 文件2為file2.c
int i, j;/*定義全程變數*/ extern int i, j;/*說明將i, j從
文件1中復制過來*/
char c; extern char c; /*將c復制過來*/
void func1(int k); func2() /*用戶定義函數*/
{
main() static float k;/*定義靜態變數*/
{ i=j*5/100;
func1(20);/*調用函數*/ k=i/1.5;
func2(); .
. .
. .
. }
}
func1(int k) /*用戶定義函數*/
{
j=k*100;
}
對於以上兩個文件file1.c和file2.c, 用Turbo C2.0的集成開發環境進行編譯
連接時, 首先應建立一個.prj的文件。例如file.prj, 該文件內容如下:
file1.c
file2.c
然後將file.prj的文件名寫入主菜單Project中的Project Name項中。 再用F9
編譯連接, 就可產生一個文件名為fioe.exe的可執行文件。
外部變數和FORTRAN語言中的COMMOM定義的公共變數一樣。
四、register
register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說
明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內
存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數,
一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數
來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。
另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數,
因此, 不能用作全程變數。定義一個整型寄存器變數可寫成:
register int a;
對於以上所介紹的變數類型和變數存儲類型將會在以後的學習中, 通過例行程
序中的定義、使用來逐漸加深理解。
4.4 數組變數
所謂數組就是指具有相同數據類型的變數集, 並擁有共同的名字。數組中的每
個特定元素都使用下標來訪問。數組由一段連續的存貯地址構成, 最低的地址對應
於第一個數組元素, 最高的地址對應最後一個數組元素。數組可以是一維的、也可
以是多維的。Turbo C2.0象它高級語方一樣也使用數組變數。
一、一維數組
一維數組的說明格式是:
類型 變數名[長度];
類型是指數據類型, 即每一個數組元素的數據類型, 包括整數型、浮點型、字
符型、指針型以及結構和聯合。
例如:
int a[10];
unsigned long a[20];
char *s[5];
char *f[];
一個學計算機的就這么牛?我是軟體工程師,弟弟!
『肆』 在c語言中「config.h"是什麼意思
config.h註解,比較長。
config.h
/*
This file contains the configuration parameters for the CPU evaluation board.
*/
#ifndef INCconfigh
#define INCconfigh
/* BSP version/revision identification, before configAll.h */
#define BSP_VER_1_2 1
#define BSP_VER_1_1 1
#define BSP_VERSION "1.2" /* A Tornado 2.0 BSP */
#define BSP_REV "/3" /* 0 for first revision */
#include "configAll.h" /* 這個文件定義了VxWorks所有的預設設置 */
/*
* Define ONE of the following to specify the revision of the PPC405GP chip
* you are using. Undefine all others. sysModel() will return
* "Unknown processor" if the correct selection is not made.
*/
/*
* Default boot line
*/
/*
解釋: 這一行對配置網路,連通Target Server及下載調試程序非常重要
DEFAULT_BOOT_LINE 的原意是為沒有NVRAM的target設計的,這樣用戶就不需要在每次系統啟動是手工輸入這些參數了.
系統啟動網路時xxxEndLoad()會解釋這一行並按這一行的定義進行載入.
Emac(0,0) : 啟動設備,可是是軟盤,硬碟,PCMCIA卡等 其他的設備名稱如:
fd為軟盤,(0,0)表示第一個軟碟機,3.5寸盤.
dc則表示從DEC 21x4x 晶元啟動,即系統有NVRAM存在,這種方式現在已不採用.
elpci表示啟動設備為3COM EtherLink XL PCI網卡.
fei:Intel 82559 EtherExpress網卡.
ene: NE2000網卡
ELT: 3COM乙太網卡
EEX: Intel網卡
ata: ATA/IDE 硬碟 ............
405GP: 主機名
vXworks 從主機載入的VxWorks文件
h=172.16.1.159 主機的IP地址
e=172.16.254.52 目標機的IP地址,若網路啟動Target Server時,這個IP必須和主機上Target Server配置的Target IP地址一致,且設置Back End選項為wdbrpc
u=xxx 用戶名,pw=xxx 密碼: 若通過網路載入調試時,主機的ftp伺服器和目標機的用戶名和密碼必須相同
tn=vxTarget 目標機名稱
*/
#define DEFAULT_BOOT_LINE \
"Emac(0,0)405GP:vxWorks h="172".16.1.159 e="172".16.254.52 \
u="xxx" pw="xxx" tn="vxTarget""
/*
* 內存設置.
* 如果定義了LOCAL_MEM_AUTOSIZE則SDRAM的大小會在Boot時指定
*/
#undef LOCAL_MEM_AUTOSIZE /* 運行時內存大小 */
#define LOCAL_MEM_SIZE 0x02000000 /* 32MB 內存預設 */
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* 內存基地址為 0 */
#define USER_RESERVED_MEM 0 /* see sysMemTop() */
/*
* Define SDRAM_ECC_ENABLE to enable ECC if an ECC SDRAM DIMM is detected
* ring SDRAM auto-configuration. If not defined, ECC will not be enabled
* if an ECC SDRAM DIMM is detected, and the DIMM will be used as a normal DIMM.
*/
#undef SDRAM_ECC_ENABLE
/* 解釋: 這里主要設置系統的內存分配定義,若分配不當,則系統不能正常載入和運行.
ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和RAM_LOW_ADRS 在config.h和Makefile文件中都要定義,且必須要保持一致,這些地址的定義一定要參照VxWorks 載入執行過程,硬體手冊,MMU和VxWorks的大小進行.主要原則是保證VxWorks image 在ROM和RAM中都要有一定的運行空間且高效運行,可參見 VxWorks BSP和啟動過程.
*/
#define ROM_BASE_ADRS 0xfff80000 /* ROM的基地址 */
#define ROM_TEXT_ADRS (ROM_BASE_ADRS + 0x100) /* 程序指針和堆棧指針 */
#define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* 熱啟動入口地址 */
#define ROM_SIZE 0x0007f000 /* ROM大小 512KB */
#define RAM_LOW_ADRS 0x00010000 /* RAM 低地址運行 vxWorks */
#define RAM_HIGH_ADRS 0x00C00000 /* RAM 高地址存儲 bootrom */
#define USER_RESERVED_MEM 0 /* 用戶保留地址 */
/*
* Cache options 定義緩存
*/
#define INCLUDE_CACHE_SUPPORT
#define USER_D_CACHE_ENABLE
#define USER_I_CACHE_ENABLE
#undef USER_D_CACHE_MODE
#define USER_D_CACHE_MODE (CACHE_COPYBACK)
/*
* 405 timers (PIT, FIT, WDT) 可由外部時鍾驅動或者CPU驅動
*/
#define TIMER_CLOCK_EXTERNAL
/*
* Optional timestamp support
*/
#undef INCLUDE_TIMESTAMP
/*
* Auxilliary Timer rates 定義輔助計時器頻率
*/
#ifdef TIMER_CLOCK_EXTERNAL
#define AUX_CLK_RATE_MIN (EXT_TIMER_CLK_FREQ / (1 << 21) )
#define AUX_CLK_RATE_MAX (EXT_TIMER_CLK_FREQ / (1 << 9) )
#define AUX_CLK_RATE_DEFAULT (EXT_TIMER_CLK_FREQ / (1 << 17) )
#else
/* ZZZZZZZZZZZ todo put rates in for system clock derived timer clock */
#endif
/*
* Watchdog Timer rates
*/
#define WDT_RATE_MIN 1 /* minimum watchdog timer rate */
#define WDT_RATE_MAX 5000 /* maximum watchdog timer rate */
/* 實時時鍾設置 */
#define INCLUDE_RTC
/* 去除不需要的網路驅動 */
#undef INCLUDE_EI
#undef INCLUDE_EX
#undef INCLUDE_ENP
#undef INCLUDE_LN
#undef INCLUDE_SM_NET
#undef INCLUDE_SM_SEQ_ADDR
/* #define for software floating point support */
#undef INCLUDE_SW_FP
/* 定義串口 Serial port configuration */
#define INCLUDE_SERIAL
/* PCI 設置,PCI configuration */
#define INCLUDE_PCI
#ifdef INCLUDE_PCI
/*
* Three programmable processor local memory address to PCI memory address
* mappings. If a region is enabled, PMMx_LOCAL_ADRS must be between
* PCI_MEMORY_START and PCI_MEMORY_END. If PMMx_PCI_HIGH_ADRS is non-zero in
* an enabled region, 64 bit al cycle addresses will be generated on the
* PCI bus for this region.
*/
//定義PCI設備的初始化地址 參見 PCI設備(網卡)初始化代碼分析
# define PMM0_LOCAL_ADRS PCI_MEMORY_START // 定義PCI空間起始地址
# define PMM0_PCI_LOW_ADRS 0x80000000 // 定義PCI空間低位地址
# define PMM0_PCI_HIGH_ADRS 0x00000000 // 定義PCI空間高位地址
# define PMM0_PCI_MASK_ATTRIB (PMM_MASK_512MB | PMM_ENABLE)
# define PMM1_LOCAL_ADRS PMM_UNUSED
# define PMM1_PCI_LOW_ADRS PMM_UNUSED
# define PMM1_PCI_HIGH_ADRS PMM_UNUSED
# define PMM1_PCI_MASK_ATTRIB PMM_UNUSED
# define PMM2_LOCAL_ADRS PMM_UNUSED
# define PMM2_PCI_LOW_ADRS PMM_UNUSED
# define PMM2_PCI_HIGH_ADRS PMM_UNUSED
# define PMM2_PCI_MASK_ATTRIB PMM_UNUSED
/*
* PCI memory address to processor local memory address mapping. If a region
* is enabled, PTMx_LOCAL_ADRS must be within the two Local memory / peripheral
* regions (0x00000000-0x7FFFFFFF, or 0F0000000-0xFFFFFFFF)
*/
# define PTM1_LOCAL_ADRS LOCAL_MEM_LOCAL_ADRS
# define PTM1_SIZE_ATTRIB PTM_SIZE_2GB | PTM_ENABLE
# define PTM2_LOCAL_ADRS PTM_UNUSED
# define PTM2_SIZE_ATTRIB PTM_UNUSED
#endif /* INCLUDE_PCI */
/*
* 如果支持網路,本地EMAC和PCI網卡,必須有一個被選取,兩者都是END形式驅動
*/
#define INCLUDE_NETWORK /* 支持網路 */
#define INCLUDE_EMAC_NETWORK /* 405GP 本地 EMAC 網路 */
#undef INCLUDE_PCI_NETWORK /* PCI 網路 */
/*
* The board does not have the Ethernet MAC address of the EMAC stored
* in any sort of NVRAM. Modify the 12 digit string below to match the decal
* that is on your board.
*/
#ifdef INCLUDE_EMAC_NETWORK
#define DEFAULT_EMAC_HW_ADDR "xxxxxxxxxxxx" /* 網路硬體地址,即MAC地址 */
#endif
/*
* WDB 通過網路Enhanced Network Driver載入調試程序,若網路載入調試,必須定義此項
*/
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*首先默認使用串口通信*/
#define WDB_TTY_CHANNEL 0 /*使用第一個串口
#ifdef INCLUDE_NETWORK
#define INCLUDE_END
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_END /* 定義網路通信, END 驅動 */
#else
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_SERIAL /* 定義串口通信,和PC機串口連接 */
#undef WDB_TTY_CHANNEL
#define WDB_TTY_CHANNEL 0 /* 串口1 */
#endif /* INCLUDE_NETWORK */
/*************** 此處定義一些雜項 */
#ifdef NUM_TTY
#undef NUM_TTY
#endif
#define NUM_TTY 2 /* 定義了兩個串口終端,*/
#ifdef WDB_TTY_BAUD
#undef WDB_TTY_BAUD
#endif
#define WDB_TTY_BAUD 57600 /* 波特率設置 9600, 19200, 38400, 57600, 115200 */
#ifdef CONSOLE_BAUD_RATE
#undef CONSOLE_BAUD_RATE
#endif
#define CONSOLE_BAUD_RATE 57600
#undef INCLUDE_ENV_VARS /* unix compatable environment variables */
#undef INCLUDE_TIMEX /* timexLib for exec timing */
#undef INCLUDE_HW_FP
#undef INCLUDE_TFTP_CLIENT /* used by autoboot from ftp server*/
#define INCLUDE_SW_FP
#define INCLUDE_ELF
#define INCLUDE_NET_SHOW
#define INCLUDE_PING
#undef INCLUDE_DEMO /* only for vxWorks bsp test */
#define ETHERNET_ADR_SET /* only for bootrom used */
#define INCLUDE_USER_APPL /* Startup the user's application in dos makefile project */
#undef PCIDEBUG
#ifdef INCLUDE_USER_APPL
#define USER_APPL_INIT _appEntry()
#endif
#endif /* INCconfigh */
#if defined(PRJ_BUILD)
#include "prjParams.h"
#endif
『伍』 C語言寫一個遍歷全盤搜索文件並返迴文件路徑的程序
給你一個思路:首先先在C盤尋找沒有,依次再去D,E,F,或軟盤A中尋找
磁碟搜索使用()和FindNextVolume()函數
文件搜索使用FindFirstFileEx()和FindNextFile()函數,
具體的函數使用方法就靠你去查詢MSDN了!
呵呵!當然邏輯上的控制也多好好設計!
『陸』 告訴我關於C語言的一些基礎、概論、理論、來源與發展之類的
(二)「項目驅動」式教學應注意的問題
1.c語言程序設計教學要幫助學生樹立面向工程的觀點
在計算機行業中,軟體是通過人們的智力活動、把知識與技術轉化成信息的一種產品。軟體的設計已經用工程的觀念來進行管理。軟體設計工作被當作一項系統工程來對待。軟體的的生存周期一般可分為以下階段:問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、運行與維護。我們不難看出軟體工程的復雜程度是很大的。理工科高等院校把c語言作為一門基礎課程,也是為了給社會培養信息技術人才。眾所周知,養成一個好的習慣是非常重要的,所以c語言程序設計作為大多數工科院校學生接觸的第一門程序設計語言(有的院校講pascal),就應該讓學生樹立正確的觀點。那麼當前的程序設計教學也必須以切合將來軟體工程開發的實際需要為第一目標,使學生在學習程序設計的初級階段就樹立正確的軟體工程觀點。這樣做不僅可以為學生將來從事計算機應用設計打下良好的基礎,而且有利於培養學生分析問題的完備性,以及統籌全局,協調關系的基本素質。
2.理論教學應從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變
「結構化程序設計」方法是程序設計的基礎,必須讓學生掌握得堅實可靠。結構化程序設計的過程是培養學生思維能力的過程,在教學中經常發現有些學生的思維混亂。這些都是缺乏思維訓練的結果。結構化程序設計的訓練不僅可以讓學生養成良好的程序設計習慣,而且可以有效地培養學生思維的條理性和邏輯性。所以在授課過程中要注意講解結構化程序設計的思想時應突出兩點:(1)程序的質量首先取決於它的結構。(2)程序設計的基本方法是自頂向下地逐步求精和模塊化。
在c程序教學過程中,越到後面的章節,學生越會產生設計程序逐漸變難的感覺,這是不符合邏輯的一種怪現象。按照常理,C語言學的越多,說明你的程序設計知識越多,設計起程序來應該更加得心應手,那麼出現這種現象的原因何在呢?當然該問題的出現的原因是多方面的,但是其中最重要的一點就是長期以來程序設計的觀念不是以如何處理好對象為出發點,而是以如何使用好語言為基本點。受這種思想的影響,我們的程序設計教學大多數不是以如何解決好問題為重點,而是以講解語法規則和語句格式為重點,是「說明書」式的教學。這樣做造成的結果就是見到一個程序後學生首先想到是該用哪條語句,而不是思考怎樣合理的解析。要切實解決這個問題,首先應該改變程序設計的觀念。「面向對象程序設計」思想是目前最為流行、極為實用的一種程序設計方法,但是讓學生直接接觸「面向對象程序設計」,肯定不能對程序設計打下牢固的基礎。「結構化與面向對象並舉」是現代計算機程序設計的發展趨勢,應該認真探索研究,讓學生有一個較為輕松的學習過程。程序設計的實質就是編寫處理對象的過程,所以將c與c++有機的融為一體的教材應該是首選教材,在教學過程中,我們應該從社會發展的角度進行探索研究,將目前最為流行又極為實用「面向對象程序設計」思想融合到c語言教學中。
3.c語言教學應培養學生良好的程序設計風格
具有良好的設計風格應該是程序員所具備的基本素質,在實際的項目中程序員往往都有自己的一些編程風格。目前95%以上的程序設計書籍不注重程序設計風格問題,這導致了很多學生沒有良好的程序設計風格,在他們剛剛畢業踏入社會時,如果周圍的同事沒有良好的編程風格,那麼很難通過環境來使自己提高這方面的素質,即使有提高也不容易比較全面的提高。因此在學生接觸的第一門程序設計語言教學中,就應該培養學生良好的程序設計風格,使他們一進工作環境就具備這個素質。
Pascal設計者N.Writh教授十分重視程序設計風格的養成,他堅信「教給學生們以表達他們思維的語言會深深地影響他們思維和創造發明的習慣,而正是這些語言本身的混亂直接影響著學生們的程序設計的風格」,他這里所指的「這些運用」是當時那些主要用於程序設計教學的計算機語言。對學生來講,一開始就強調程序設計風格很有必要,良好的程序設計風格不僅有助於提高程序的可靠性、可理解性、可測試性、可維護性和可重用性,而且也能夠促進技術的交流,改善軟體的質量。所以培養良好的程序設計風格對於初學者來說非常重要。
程序設計風格,實際上是指的是編碼風格。在教學過程中應從源程序文檔化,數據說明的原則,輸入/輸出方法這三個方面培養學生的編碼風格,進而從編碼原則探討提高程序的可讀性、改善程序質量的方法。
(1)源程序文檔化。編碼的目的是產生程序,但是為了提高程序的可維護性。源代碼是需要實現文檔化的。源程序文檔化包括選擇標識符(變數和標號)的名字、安排注釋以及標準的書寫格式等。
①選擇標識符的命名規則。標識符包括模塊名、變數名、常量名、標號名、子程序名等。這些名字應能反映它所代表的實際東西,應有一定實際意義,使其能顧名思義。另外在模塊名、變數名、常量名、標號名、子程序名中使用下劃線是一種風格。使用這一技術的一種廣為人知的命名規則就是匈牙利命名法(變數類型由一個或兩個字元表示,並且這些字元將作為變數名的前綴)。當然使用匈牙利命名法與否都沒有錯誤,重要的是要保持一致性——在整個程序中使用相同的命名規則。這就是說,如果你在一個小組環境中編程,你和其他小組成員應該制定一種命名規則。並自始至終使用這種規則。如果有人使用了別的命名規則,那麼集成的程序讀起來將是很費勁的。此外,你還要與程序中用到的第三方庫(如果有的話)所使用的風格保持一致。如果可能的話,你應該盡量使用與第三方庫相同的命名規則,這將加強你的程序的可讀性和一致性。
②注釋。程序中的注釋是程序設計者與程序閱讀者之間通信的重要手段。注釋能夠幫助讀者理解程序,並為後續測試維護提供明確的指導信息。因此,注釋是十分重要的,大多數程序設計語言提供了使用自然語言來寫注釋的環境,為程序閱讀者帶來很大的方便。注釋分為功能性注釋和序言性注釋。
a.功能性注釋。功能性注釋在源程序中,用以描述其後的語句或程序段是在做什麼工作,也就是解釋下面要「做什麼」,而不是解釋下面怎麼做。對於書寫功能性注釋,要注意以下幾點:第一描述一段程序,而不是每一個語句。第二利用縮進和空行,使程序與注釋容易區別。第三注釋要准確無誤。
b.序言性注釋。序言性注釋通常位於每個程序模塊的開頭部分,它給出程序的整體說明,對於理解程序具有引導作用。有些軟體開發部門對序言性注釋做了明確而嚴格的規定,要求程序編制者逐項列出。有關內容包括:程序標題;有關該模塊功能和目的的說明;主要演算法;介面說明:包括調用形式,參數描述,子程序清單;有關數據描述;模塊位置(在哪一個源文件中,或隸屬於哪一個軟體包);開發簡歷:模塊設計者、復審考、復審日期。
③用標準的書寫格式。源程序清單的書寫建議採用以下幾點:
a.每行只寫一條語句;
b.用分層縮進的寫法顯示嵌套結構層次,這樣可使程序的邏輯結構更加清晰,層次更加分明。
c.書寫表達式時適當使用空格或圓括弧作隔離符。
d.在注釋段周圍加上邊框;
e.注釋段與程序段、以及不同的程序段之間插入字行;
(2)數據說明採用的原則。在編寫程序時,要注意數據說明的風格。
數據說明的次序如果規范,將有利於測試,排錯和維護。首先說明的先後次序要固定,例如,按常量說明、簡單變數類型說明、數組說明用數據塊說明、所有的文件說明的順序說明。當然在類型說明中還可進一步要求,例如按如下順序排列:整型量說明、實型量說明、字元量說明、邏輯說明。
其次當用一個語句說明多個變數名時,應當對這些變數按字母的順序排列。
最後對於復雜數據結構,應利用注釋說明實現這個數據結構的特點。
(3)輸入/輸出方法。輸入/輸出的方式和格式應當盡量避免因設計不當給用戶帶來的麻煩。這就要求,源程序的輸入/輸出風格必須滿足能否為用戶接受這一原則。所以在設計程序時,應考慮以下原則:輸入數據時,要使輸入的步驟和操作盡可能簡單,應允許使用自由格式輸入;應允許預設值;對輸入的數據要進行檢驗,以保證每個數據的有效性。
(三)結束語
在教學過程中,我們讓學生設計一個程序模擬體育彩票的銷售與對獎的過程,取得了良好的效果。他不僅啟發和誘導了學生獨立思考、積極思維的主動性,而且充分調動了學生學習的自覺性和積極性,使學生融會貫通地掌握了所學知識,提高了分析問題和解決實際問題的能力。
搞好c程序設計的教學工作涉及的因素很多,如果以項目來驅動教學,首先讓學生樹立面向工程的思想,其次把教學從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變,最後特別要培養學生養成良好的編碼風格,從而使他們學會能夠「干什麼」,那麼我們認為教學目的就達到了。
『柒』 計算機二級C語言資料
計算機二級C語言資料
C語言對編寫需要進行硬體操作的場合,優於其它高級語言。下面是我整理的計算機二級C語言資料,希望大家認真閱讀~
一.什麼是計算機二級考試?
全國計算機等級考試(National Computer Rank Examination,簡稱NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查應試人員計算機應用知識與技能的全國性計算機水平考試體系。二級考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能。
金屬質感分割線
二.學習內容
基礎知識與基本操作
(一)基礎知識
1.計算機系統的主要技術指標與系統配置。
2.計算機系統、硬體、軟體及其相互關系。
3.微機硬體系統的基本組成。包括:中央處理器(運算器與控制器),內存儲器(RAM與ROM),外存儲器(硬碟、軟盤與光碟),輸入設備(鍵盤與滑鼠)輸出設備(顯示器與列印機)。
4.軟體系統的組成,系統軟體與應用軟體;軟體的基本概念,文檔;程序設計語言與語言處理程序(匯編程序、編譯程序、解釋程序)。
5.計算機的常用數制(二進制、十六進制及其與十進制之間的轉換);數據基本單位(位、位元組、字、字長)。
6.計算機的'安全操作;計算機病毒的防治。
7.計算機網路的一般知識。
8.多媒體技術的一般知識。
(二) DOS的基本操作
1.操作系統的基本功能與分類。
2.DOS操作系統的基本組成。
3.文件、目錄、路徑的基本概念。
4.常用DOS操作,包括:
初始化與啟動;文件操作(TYPE,COPY,DEL,REN,XCOPY,ATTRIB);目錄操作(DIR,MD,CD,RD,TREE,PATH);磁碟操作(FORMAT,DISKCOPY,CHKDSK);功能操作(VER,DATE,TIME,CLS,PROMPT,HELP);批處理(批處理文件的建立與執行,自動批處理文件);輸入輸出改向。
(三) WINDOW的基本操作
1.Windows的特點、基本構成及其運行環境。
2.Windows用戶界面的基本元素。包括:窗口、圖標、菜單、對話框、按鈕、游標等。
3.Windows基本操作。包括:啟動與退出,滑鼠操作,窗口操作,圖標操作、菜單操作,對話框操作。
程序設計
1.能運用結構化程序設計方法編寫程序。
2.掌握基本數據結構和常用演算法。
3.能熟練使用一種高級或一種資料庫語言(共有QBASIC、FORTRAN、PASCAL、C以及FOXBASE等五種語言,考生任選其中一種。各種語言的考試內容附後)。
上機操作
在指定的時間內使用微機完成下述操作:
1.完成指定的計算機基本操作(包括機器啟動和操作命令的使用)。
2.按給定要求編寫和運行程序。
3.調試程序,包括對給出的不完善的程序進行修改和補充,使之能得到正確的結果。
;『捌』 c語言的小問題 什麼叫外部介質
計算機理論上的內部設備是指運算器,控制器,存儲器。
現實中,運算器和控制器在cpu里邊,存儲器在cpu里邊有一部分,外邊就是內存。
其餘的設備都是外部設備。
要知道,計算機剛出現的時候是沒有硬碟的。
另外,學習理論的時候還是不要對現實對號入座吧,=學通了以後自然就明白了。