邢如意
摘要:C語言作為多程序編輯的基礎語言,在國際上已得到的廣泛的應用,近年來在科技的快速發(fā)展下,對計算機C語言技術的要求也在不斷提高。而Linux系統(tǒng)作為操作系統(tǒng)中的重要力量,在現(xiàn)行Linux系統(tǒng)下進行計算機C語言編程,是一項比較復雜、困難的事情。因此,如何加強在Linux系統(tǒng)下的計算機C語言編程技巧,也是目前編程行業(yè)面臨的嚴峻問題之一。該文就以計算機C語言為例,探討在高科技的發(fā)展下,其在Linux系統(tǒng)中應用的編程技巧,以供參考。
關鍵詞:Linux系統(tǒng);計算機;C語言;編程技巧
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)36-8674-02
Linux是指一套免費使用和自由傳播的類Unix操作系統(tǒng),其是一個基于UNIX及POSIX的多用戶、多任務、支持多線程與多CPU的操作系統(tǒng)。Linux操作系統(tǒng)作為一套免費使用和自由傳播的類Unix操作系統(tǒng),已經(jīng)成為目前世界上使用人數(shù)最多的類Unix操作系統(tǒng),并且使用人數(shù)還在呈持續(xù)增長趨勢。而C語言作為IT工作中最為常用的一種編程語言,目前市面上很多軟件都是在C語言的平臺上產(chǎn)生的?;贚inux系統(tǒng)與C語言應用的廣泛性與普遍于,于Linux系統(tǒng)下進行計算機C語言編程,也是必然趨勢下的產(chǎn)物。但在Linux系統(tǒng)下熟練、靈活應用計算機C語言編程,卻不是一件容易的事,因此,了解Linux系統(tǒng)下計算機C語言的編程技巧,便也是每位編程人員必須掌握的專業(yè)知識。
1 C語言的定義及優(yōu)缺點
1.1 C語言的定義
C語言作為一種結(jié)構化語言,主要起到人類與計算機“交流”的作用,C語言可看作是最接近人類思維的語言,也最經(jīng)典的數(shù)據(jù)結(jié)構語言、最基礎的軟件設計語言。C語言層次清晰,既具有高級語言的特點,同時又具有匯編語言的特點。C語言可以作為系統(tǒng)設計的語言,用來編寫工作系統(tǒng)應用程序,也可作為應用程序設計語言,用來編寫不依賴計算機硬件的應用程序。因此,也使得C語言的應用范圍廣泛,其不僅應用于軟件開發(fā)方面,各類科研項目也均需要C語言,例如單片機及嵌入式系統(tǒng)等硬件方面便可以用C語言來開發(fā)[1]。
1.2 C語言的優(yōu)點
C語言的優(yōu)點諸多,最主要的優(yōu)點體現(xiàn)在如下幾方面:
1) 靈活方便。C語言共有32個關鍵詞和9種控制語句,程序書寫形式自由,主要應用小寫字母來表示,具有簡潔緊湊、靈活方便的應用優(yōu)點。
2) 數(shù)據(jù)結(jié)構豐富。C語言的數(shù)據(jù)類型主要包括有字符型、實型、整型、結(jié)構體類型、指針類型、數(shù)組類型、共用體類型等幾類。通過對以上數(shù)據(jù)類型的靈活應用,可以實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構運算。
3) 運算符豐富。C語言共有34例運算符,運算符包含范圍極為廣泛,C語言可將賦值、括號、強制類型轉(zhuǎn)換等都作為運算符進行處理,從而使C語言的運算類型豐富,表達式類型多樣化。
4) 語法限制不嚴格。雖然C語言屬于強類型語言,但它的語法限制不太嚴格,語法比較靈活,使程序編寫人員擁有較大的自由度。
5) 目標代碼生成質(zhì)量高。C語言生成的目標代碼質(zhì)量高,程序執(zhí)行效率高,通常情況下,其只比匯編程序生成的目標代碼效率低10~20%左右,由于C語言目標代碼生成質(zhì)量高,也使得它在編程中得到了廣泛的應用。
6) 直接操作性強。C語言允許直接訪問物理地址,可以對硬件進行直接操作,由此可見,C語言既具有高級語言的功能,也具備低級語言的諸多功能,可以像匯編語言一樣,對位、字節(jié)與地址進行操作。
7) 可移植性好。C語言可適用于多個操作系統(tǒng),例如UNIX、DOS系統(tǒng),均可進行計算機C語言編程,C語言還適用于多種機型,給編程人員提供了極大的方便。此外,C語還具有強大的繪圖功能及數(shù)據(jù)處理能力,可移植性好,適用于編寫系統(tǒng)軟件、二維、三維圖形及動畫。
8) 屬于結(jié)構式語言。C語言屬于結(jié)構式語言,該語言的顯著特點是數(shù)據(jù)以及代碼的分隔化,即是指程序的各部分除了一些必要的信息交流外,可處于彼此獨立的狀態(tài)。
1.3 C語言的缺點
在實際的編程應用中,C語言的缺點主要體現(xiàn)在兩個方面:其一,C語言的主要缺點表現(xiàn)在數(shù)據(jù)的封裝性上,這一點導致C語言在數(shù)據(jù)的安全性方面存在較大的缺陷,這也是C與C++的一大區(qū)別;其二,C語言的第二大缺點體現(xiàn)在程序的安全性上,由于C語言的語法限制不太嚴格,對變量的類型約束不嚴格,由此影響了程度的安全性,對數(shù)組下標越界不作檢查等。由于以上兩方面缺點,導致C語言在實際應用中比其他高級語言較難掌握,因此編程時也應該提高對C語言缺點的重點,并采取科學、合理的措施有效規(guī)避缺點導致的不良影響。
2 Linux系統(tǒng)下計算機C語言的編程技巧分析
文章就以Linux系統(tǒng)為例,綜合C語言的優(yōu)缺點,分析總結(jié)Linux系統(tǒng)下計算機C語言的編程技巧,以供參考。
2.1 源程序的編譯
在Linux系統(tǒng)下進行C語言源程序編譯時,必須要使用到GNU的gcc編譯器,因此,編程人員首先要學會靈活使用gcc編譯器編譯源程序。雖然gcc編譯器有很多種選項,但一般來說,編程人員只了解其中最主要的幾個選項,便可編譯自己所寫的簡單的源程序,gcc編譯器的主要選頂表現(xiàn)在三下方面:其一,要求gcc編譯器進行編譯時,需要將程序以后在進行相關調(diào)試信息提供時,采用-g選項來表示;其二,要求輸可以進行執(zhí)行文件名時,采用-o選項來表示;其三,要求gcc編譯器需要將相應的目標代碼輸出時,采用-c選項來表示。
假設,有一個非常簡單的源程序:
(hello.c):
int main(int argc,char **argv)
{printf("Hello Linux\n" )}endprint
對上述源程序進行編譯時,編程人員只需在命令下執(zhí)行:gcc -o hello hello.c,
gcc編譯器便會為我們生成一個可執(zhí)行文件hello,執(zhí)行/hello便可看到程序的輸出結(jié)果。上面的命令行中,gcc代表編程人員選擇gcc編譯器進行編譯源程序,-o選項代表編程人員要求編譯器輸出的可執(zhí)行文件名為hello,而hello.c,便是所需要的源程序文件。
如果編程人員Linux系統(tǒng)下進行計算機C語言編程時,還需要在應用gcc編譯器中的更多選項,可以通過查看gcc編譯器的幫助文檔來獲得其它選項的詳細說明[2]。
2.2 程序庫的鏈接
以下面程序為例:/* temp.c */
#include
int main(int argc,char **argv)
{ double value;
printf("Value:%f\n",value); }
嘗試編譯上面程序可發(fā)現(xiàn),該程序十分簡單,但是,若編程人員采用gcc -o temp temp.c編譯時,會出現(xiàn)如下提示的錯誤信息:
/tmp/cc33Kydu.o: In function `main':
/tmp/cc33Kydu.o(.text+0xe): undefined reference to `log'
collect2: ld returned 1 exit status
導致錯誤信息出現(xiàn)的原因,主要是因為編譯器未能找到log的具體實現(xiàn),雖然編程人員偏譯時使用了正確的頭文件,但是在編譯的時候還是要連接確定的庫,才能避免上述錯誤的發(fā)生。例如上述程序,為了使用數(shù)學函數(shù),必須和數(shù)學庫連接,因此,編程人員可加入-lm選項.gcc-o temp temp.c-lm,只有這樣,才能進行正確的編譯。以此類推,在Linux系統(tǒng)下進行計算機C語言編程時,編程人員應該根據(jù)具體情況,合理鏈接相應的數(shù)據(jù)庫,才可保證編程的正確性。
2.3 加強程序調(diào)試
編程人員編寫C語言程序并不是一次性就會成功的,在實際操作中,會出現(xiàn)很多意想不到的錯誤,為避免這種錯誤,便要學會對程序的調(diào)試。Linux系統(tǒng)下計算機C語言的編程最常應用的調(diào)試軟件為gdb,根據(jù)界面的不同,程序調(diào)試方法也會有所不同[3]。例如,如需在圖形界面下調(diào)試程序,便選擇xxgdb,且要記得在編譯的時候加入-g選項。關于gdb如何使用,如下作簡單敘述:
程序gdb在運行之后,便會在計算機屏幕上看到這樣的內(nèi)容:
GOB is free software and you are welcome to distribute copies of it under certain conditions;type”show copying”to see the conditions There is absolutely no warranty for GDB;type”show warranty”for Details.
GDB 4.13(i481-alak-linux),
(gdb)
對gdb進行啟動時,還可在命令行上對多個選項進行指定,也可采用下面的方式進行gdb:gdb
選擇上述方式進行程序調(diào)時,編程人員便可根據(jù)自己的實際需求,指定相應類型的調(diào)試程序,這樣操作起來便更加簡單、便捷。
2.4 頭文件及系統(tǒng)求助
若編程人員進行C語言編寫時,只知道一個函數(shù)的大概形式,卻忘記了確切的表達方式,或是不記得函數(shù)在那個頭文件進行了說明,此時便可求助于系統(tǒng)。例如,編程人員想知識函數(shù)fread的確切形式,便可執(zhí)行man fread系統(tǒng),此時系統(tǒng)會輸出函數(shù)的詳細解釋,并顯示出函數(shù)fread所在的頭文件說明。除了man fread系統(tǒng)之外,Info、Howto也是重要的頭文件及系統(tǒng)求助工具,在Linux系統(tǒng)下計算機C語言的實際編程中,只要編程人員熟練掌握了求助工具,很多編程中遇到的難題便會迎刃而解,進而促進編程的效率與準確性[4-5]。
2.5 靈活應用綜合知識
在Linux系統(tǒng)下計算機C語言的編程需要借助多方面知識,例如,函數(shù)、指針、數(shù)組、字符串、變量等方面知識,均有涉及。因此,C語言另一個編程技巧便是要靈活應用綜合知識,編程人員在實際編寫過程中,需要將這多方面知識整合起來,靈活、合理、有效地應用到編程中,才能使計算機C語言編寫出來的程序更加完美。此外,針對不同的C語言結(jié)構而言,若需
要在編寫同一個C語言程序時同時執(zhí)行,必須要注意對綜合知識的靈活運用。通過對與C語言編程相關知識的整合、銜接,才可編寫出科學、合理的執(zhí)行命令,進一步促進C語言程序編寫的完美,達到最佳的C語言編寫效果[6]。
2.6 多上機練習程序編寫
在計算機技術應用的普及下,對于計算機C語言的編程人才也不僅僅是需要理論知識非常強的人,還需要實踐能力強的人才。因此,在Linux系統(tǒng)下,學好計算機C語言編程技巧,便需要編程人員多上機練習程序編寫,才能真正提高計算機C語言編程能力。通過上機練習,才可以使編程人員的理論知識與實際相聯(lián)系,并且,編程人員在反復上機練習的過程中,還可以發(fā)現(xiàn)許多理論知識掌握不到的地方,在循序漸進中提高自己的編程能力,最終為正確、高效地進行計算機C語言編程奠定堅實基礎[7-8]。
3 結(jié)束語
Linux系統(tǒng)具有很強的網(wǎng)絡安全及網(wǎng)絡管理功能,系統(tǒng)穩(wěn)定性與可靠性強,目前已經(jīng)成為操作系統(tǒng)中的重要力量。但在Linux系統(tǒng)下進行計算機C語言編程時,若對Linux系統(tǒng)及C語言的特點了解不全面,也會出現(xiàn)編程困難的現(xiàn)象,因此,在Linux系統(tǒng)下進行C語言編程時,就必須掌握一定的編程技巧,才能提高C語言程序編輯的效果,為進一步提升C語言編程人員的工作效率打好基礎。
參考文獻:
[1] 李俊玲.淺談Linux操作系統(tǒng)下的C程序開發(fā)[J].中國科技財富,2012,5(5):314.
[2] 楊海峰,席振元,曹立碩.基于Linux的防火墻系統(tǒng)的研究與開發(fā)[J].科技風,2014,6(6):32-33.
[3] 王亞平.基于Linux管道技術的編程方法研究[J].科技資訊,2012,13(13):46.
[4] 李斌.基于ARM-Linux的可編程自動化控制器的研究與開發(fā)[D].2012.
[5] 夏凡,陳蜀宇,龍昌生.基于 Framebuffer 的嵌入式 Linux 圖形庫設計[J].計算機系統(tǒng)應用,2012,21(5):122-125.
[6] 王曉明.計算機C語言編輯程序探討[J].長春教育學院學報,2014,30(5):145-146.
[7] 余勍,王捷.淺談C 語言編程技巧在C語言學習中的應用[J].信息通信,2013,7(7):108.
[8] 韓偉,宋明偉,魏志強,等.基于Windows的華中世紀星數(shù)控系統(tǒng)PLC編程系統(tǒng)設計[J].機床與液壓,2011,14(14):214-216.