1. gzyueqian
      13352868059

      嵌入式開(kāi)發(fā):為何頭文件聲明時(shí)加extern定義時(shí)不要加

      更新時(shí)間: 2023-11-23 18:06:54來(lái)源: 粵嵌教育瀏覽量:1423

        在嵌入式開(kāi)發(fā)中,頭文件的聲明和定義是一個(gè)常見(jiàn)的問(wèn)題。在C和C++中,通常會(huì)使用頭文件來(lái)聲明函數(shù)、變量和類型等,以便在不同的源文件中共享這些聲明。然而,在使用頭文件時(shí),有時(shí)會(huì)遇到需要在頭文件中進(jìn)行聲明但不進(jìn)行定義,或者需要在源文件中進(jìn)行定義但不進(jìn)行聲明的情況。在這種情況下,我們通常會(huì)使用`extern`關(guān)鍵字來(lái)進(jìn)行聲明,但不會(huì)在定義時(shí)使用`extern`關(guān)鍵字。下面我們將詳細(xì)探討為什么要這樣做。

        頭文件中的聲明

        在頭文件中進(jìn)行聲明時(shí),通常使用`extern`關(guān)鍵字來(lái)表示這是一個(gè)外部的聲明,而不是定義。例如,當(dāng)我們?cè)陬^文件中聲明一個(gè)全局變量或者函數(shù)時(shí),我們會(huì)使用`extern`關(guān)鍵字來(lái)表示這只是一個(gè)聲明,而不是定義。這樣做的目的是為了告訴編譯器,這個(gè)變量或函數(shù)的定義在其他的源文件中,需要在鏈接時(shí)進(jìn)行解析。

        源文件中的定義

        在源文件中進(jìn)行定義時(shí),我們不需要再次使用`extern`關(guān)鍵字,因?yàn)樵谶@里我們要進(jìn)行的是定義,而不是聲明。在源文件中,我們會(huì)給變量分配內(nèi)存或者給函數(shù)提供具體的實(shí)現(xiàn),這就是定義。因此,我們不需要再次使用`extern`關(guān)鍵字來(lái)表示這是一個(gè)外部的聲明。

        為什么這樣做?

        這種區(qū)分聲明和定義的方式有助于提高代碼的可維護(hù)性和可移植性。通過(guò)在頭文件中使用`extern`進(jìn)行聲明,我們可以清晰地表明這只是一個(gè)聲明,而不是定義,這樣可以避免在多個(gè)源文件中包含同一個(gè)頭文件時(shí)引起的重復(fù)定義錯(cuò)誤。而在源文件中進(jìn)行定義時(shí),我們不需要再次使用`extern`,這樣可以使代碼更加清晰和簡(jiǎn)潔。

        實(shí)際應(yīng)用

        在實(shí)際的嵌入式開(kāi)發(fā)中,我們通常會(huì)遵循這種聲明和定義的方式來(lái)管理頭文件。這樣做有助于避免因?yàn)橹貜?fù)包含頭文件而引起的重復(fù)定義錯(cuò)誤,同時(shí)也有助于提高代碼的可讀性和可維護(hù)性。

        總結(jié)

        在嵌入式開(kāi)發(fā)中,頭文件的聲明和定義是一個(gè)重要的問(wèn)題。為了提高代碼的可維護(hù)性和可移植性,我們通常會(huì)在頭文件中使用`extern`進(jìn)行聲明,而在源文件中進(jìn)行定義時(shí)不再使用`extern`。這種區(qū)分聲明和定義的方式有助于避免重復(fù)定義錯(cuò)誤,并使代碼更加清晰和簡(jiǎn)潔。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲一区二区三区久 | 久久网一区二区三区 | 在线观看国产视频啊啊啊舔 | 性色αv国产精品久久久 | 亚洲欧美另类自拍 | 亚洲中文字幕在线精品一区 |