999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談C語言中預處理

2016-11-18 20:14:24曾祥宇王璐瑤張珂鷺
藝術科技 2016年9期

曾祥宇 王璐瑤 張珂鷺

摘 要:C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。C語言在很多方面都可以用,不僅僅是在軟件開發上,各類科研都是需要用到C語言的。具體應用比如我是學硬件的,單片機以及嵌入式系統都可以用C來開發。C語言發展如此迅速,而且成為最受歡迎的語言之一,主要因為它具有強大的功能。許多著名的系統軟件,如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優勢了。

關鍵詞:C語言;預處理;宏定義

編譯預處理是C語言一個重要且特別的功能.在進行C語言程序設計時,靈活使用編譯預處理技術可使源程序模塊化結構好,更加清晰和便于閱讀,并易于調試和移植。所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所做的工作。預處理是C語言的一個重要功能, 它由預處理程序負責完成。當對一個源文件進行編譯時,系統把自動引用預處理程序對源程序中的預處理部分作處理,處理完畢自動進入對源程序的編譯。在嵌入式系統編程中不管是內核的驅動程序還是應用程序的編寫,涉及大量的預處理與條件編譯,這樣做的好處主要體現在代碼的移植性強以及代碼的修改方便等方面。因此引入了預處理與條件編譯的概念。

在C語言的程序中可包括各種以符號#開頭的編譯指令,這些指令稱為預處理命令。預處理命令屬于C語言編譯器,而不是C語言的組成部分。通過預處理命令可擴展C語言程序設計的環境。

1 預處理的工作方式

預處理的行為是由指令控制的。這些指令是由#字符開頭的一些命令。

#define指令定義了一個宏——用來代表其他東西的一個命令,通常是某一個類型的常量。預處理會通過將宏的名字和它的定義存儲在一起來響應#define指令。當這個宏在后面的程序中使用到時,預處理器“擴展”了宏,將宏替換為它所定義的值。

#include指令告訴預處理器打開一個特定的文件,將它的內容作為正在編譯的文件的一部分“包含”進來。例如,下面這行命令:

#include。指示預處理器打開一個名字為stdio.h的文件,并將它的內容加到當前的程序中。預處理器的輸入是一個C語言程序,程序可能包含指令。預處理器會執行這些指令,并在處理過程中刪除這些指令。預處理器的輸出是另外一個程序:原程序的一個編輯后的版本,不再包含指令。預處理器的輸出被直接交給編譯器,編譯器檢查程序是否有錯誤,并經程序翻譯為目標代碼。 C語言的預處理主要有三個方面的內容:宏定義,文件包含以及條件編譯。本文主要討論前兩者。

2 宏定義命令——#define

使用#define命令并不是真正的定義符號常量,而是定義一個可以替換的宏。被定義為宏的標示符稱為“宏名”。在編譯預處理過程時,對程序中所有出現的“宏名”,都用宏定義中的字符串去代換,這稱為“宏代換”或“宏展開”。

在C語言中,宏分為有參數和無參數兩種。

2.1 無參數的宏

其定義格式如下:

#define宏名 字符串

在以上宏定義語句中,各部分的含義如下:

第一,#:表示這是一條預處理命令(凡是以“#”開始的均為預處理命令)。第二,define:關鍵字“define”為宏定義命令。第三,宏名:是一個標示符,必須符合C語言標示符的規定,一般以大寫字母標示宏名。第四,字符串:可以是常數,表達式,格式串等。在前面使用的符號常量的定義就是一個無參數宏定義。

Notice:

預處理命令語句后面一般不會添加分號,如果在#define最后有分號,在宏替換時分號也將替換到源代碼中去。在宏名和字符串之間可以有任意一個空格。

Eg:#define PI 3.14

在使用宏定義時,還需要注意以下幾點:

第一,宏定義是宏名來表示一個字符串,在宏展開時又以該字符串取代宏名。這只是一種簡單的代換,字符串中可以含任何字符,可以是常數,也可以是表達式,預處理程序對它不作任何檢查。如有錯誤,只能在編譯已被宏展開后的源程序時發現。第二,宏定義必須寫在函數之外,其作用域為宏定義命令起到源程序結束。第三,宏名在源程序只能夠若用引號括起來,則預處理程序不對其作宏替換。第四,宏定義允許嵌套,在宏定義的字符串中可以使用已經定義的宏名。在宏展開時由預處理程序層層替換。第五,習慣上宏名可用大寫字母表示,以方便與變量區別。但也允許用小寫字母。

2.2 帶參數的宏

#define命令定義宏時,還可以為宏設置參數。與函數中的參數類似,在宏定于中的參數為形式參數,在宏調用中的參數稱為實際參數。對帶參數的宏,在調用中,不僅要宏展開,還要用實參去代換形參。

帶參宏定義的一般形式為:

#define 宏名(形參表) 字符串

在定義帶參數的宏時,宏名和形參表之間不能有空格出現,否則,就將宏定義成為無參數形式,而導致程序出錯。

Eg:#define ABS(x) (x)<0?-(x):(x)

以上的宏定義中,如果x的值小于0,則使用一元運算符(-)對其取負,得到正數。

3 文件包含——include

當一個C語言程序由多個文件模塊組成時,主模塊中一般包含main函數和一些當前程序專用的函數。程序從main函數開始執行,在執行過程中,可調用當前文件中的函數,也可調用其他文件模塊中的函數。

如果在模塊中要調用其他文件模塊中的函數,首先必須在主模塊中聲明該函數原型。一般都是采用文件包含的方法,包含其他文件模塊的頭文件。

文件包含中指定的文件名即可以用引號括起來,也可以用尖括號括起來,格式如下:

#include<文件名>或#include“文件名”

如果使用尖括號<>括起文件名,則編譯程序將到C語言開發環境中設置好的 include文件中去找指定的文件。

因為C語言的標準頭文件都存放在include文件夾中,所以一般對標準頭文件采用尖括號;對編程自己編寫的文件,則使用雙引號。如果自己編寫的文件不是存放在當前工作文件夾,可以在#include命令后面加在路徑。

#include命令的作用是把指定的文件模塊內容插入到#include所在的位置,當程序編譯鏈接時,系統會把所有#include指定的文件鏈接生成可執行代碼。文件包含必須以#開頭,表示這是編譯預處理命令,行尾不能用分號結束。

4 結語

隨著計算機網絡技術全球化熱潮的不斷推進,人類社會進入了一個新的信息時代,網絡技術被廣泛應用到經濟發展的各個領域中,網絡技術已經成為促進企業快速健康發展、推動區域經濟增長乃至使一個國家的經濟發展邁上一個新臺階的重要推動力。

參考文獻:

[1] 王波.關于C語言中預處理的應用技巧[J].計算機時代,2003(6).

[2] 魏燦秋,蒲小瓊. C語言中的編譯預處理技術及其靈活運用[J].計算機應用,1998(6).

作者簡介:曾祥宇(1995—),男,遼寧遼陽人,沈陽理工大學學生。

王璐瑤(1996—),男,山東東營人,沈陽理工大學學生。

張珂鷺(1995—),男,遼寧凌源人,沈陽理工大學學生。

主站蜘蛛池模板: 国产视频入口| 91精品免费久久久| 99热国产这里只有精品9九| 欧美成人影院亚洲综合图| 亚洲国产综合精品一区| 亚洲国内精品自在自线官| 四虎综合网| 亚洲欧美日本国产专区一区| 久久久久中文字幕精品视频| aa级毛片毛片免费观看久| 久久亚洲天堂| 国产91丝袜在线播放动漫 | 亚洲最新网址| 国产在线97| 日本午夜影院| 97影院午夜在线观看视频| 午夜国产在线观看| 亚洲V日韩V无码一区二区| 国产成在线观看免费视频| 国产香蕉国产精品偷在线观看| 五月婷婷丁香色| 91九色最新地址| 国产欧美综合在线观看第七页| 国国产a国产片免费麻豆| 中文字幕中文字字幕码一二区| 女人毛片a级大学毛片免费| 欧美精品aⅴ在线视频| 一区二区在线视频免费观看| 亚洲色图综合在线| 精品自拍视频在线观看| 久久黄色毛片| 久久成人18免费| 国产人碰人摸人爱免费视频| 毛片久久久| 国产网站免费看| 欧美区国产区| 亚洲AⅤ无码国产精品| 国产精品福利导航| 免费A级毛片无码无遮挡| 国产91丝袜| 国产精品制服| 免费在线视频a| 亚洲成人一区二区三区| 久久精品嫩草研究院| 亚洲国产精品成人久久综合影院 | 91区国产福利在线观看午夜 | 欧美国产视频| 自拍亚洲欧美精品| 亚洲精品成人片在线观看| 久久免费视频播放| 2022国产91精品久久久久久| 欧美成人一级| 国产免费精彩视频| 欧美成人看片一区二区三区| 欧美一级在线看| 香蕉在线视频网站| 亚洲天堂久久新| 亚洲精品老司机| 老司机午夜精品视频你懂的| 免费看av在线网站网址| 中国一级毛片免费观看| 不卡无码网| 国产精品亚欧美一区二区三区| 日韩黄色大片免费看| 国产美女丝袜高潮| 国产熟睡乱子伦视频网站| 日韩小视频在线观看| 巨熟乳波霸若妻中文观看免费| 无码高清专区| 国产美女91呻吟求| 久久婷婷国产综合尤物精品| 嫩草影院在线观看精品视频| 久久香蕉国产线看观看亚洲片| 极品私人尤物在线精品首页 | 欧美成人日韩| 欧美激情视频二区| 欧美一级99在线观看国产| 亚洲高清无码久久久| 五月婷婷综合在线视频| 色哟哟国产精品| 国产精品自在线拍国产电影| 国产在线视频自拍|