遇C語言條件編譯就犯怵,不知什麼意思,c語言標頭檔中的宏定義,

來源:互聯網
上載者:User

遇C語言條件編譯就犯怵,不知什麼意思,c語言標頭檔中的宏定義,

前言

看見標頭檔中的條件編譯就犯怵,不知什麼意思,但是,你老師說:”就得那麼寫“,你照做,但是知其然而不知其所以然。今天分享下是自己的理解~~~純屬個人獻醜,新手可閱,老鳥繞道。

程式碼片段

漲姿勢

分析:

第1、2行和第14行:防止重複定義。即第一部分:

在首次包含這個檔案時,沒有定義宏DSP_ADC_BSP_H_,前置處理器允許保留#ifndef和#endif之間的多行內容。

如果再次包含此檔案,前置處理器將把#ifndef和#endif之間的內容刪除。意思是如果兩個.c檔案同時包含了該.h檔案,只會定義一次。

第3~12行:提供只在.h檔案中只定義一次就可以在別的模組中使用外部函數與變數的方法。

首先說明extern:

extern int i;

該聲明編譯器提供的資訊是,i 是int型變數 但是編譯器不會為i分配儲存單元。上述聲明不是變數的定義,而是提示編譯器需要訪問定義在別處的變數。

變數在程式中可以多次聲明,但只能有一次定義。

在與之對應模組的.c檔案中會有這麼一句話:

#define _DSP_ADC_BSP_C_ //定義了_DSP_ADC_BSP_C_

那麼當為本模組.c檔案時,ADCBSPEXT替換為空白。

函式宣告就是:

當為其他.c檔案用到這些函數式,ADCBSPEXT替換為extern以提供使用。

好了今天的分享就這裡了,內容非常少,有過基礎的應該都知道。在這裡獻醜了



  • 本文已收錄於以下專欄:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.