找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3934|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

KEILC51編譯ERROR L104: MULTIPLE PUBLIC DEFINITIONS重復(fù)定義

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:143648 發(fā)表于 2016-12-9 21:03 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
c/c++語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給編程帶來很大的麻煩,為了使大家少走彎路,特祥細(xì)的說明一下。
      對于比較小的程序,一般只有一個c文件和一個頭文件,全局變量我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變量i進(jìn)行聲明在c文件的程序之前必須加上int i進(jìn)行定義。extern int i=0;這一句聲明和定義都做了。
    對于大一點(diǎn)的程序,有很多c文件和頭文件,這個時候全局變量就必須在頭文件中聲明(不需要初始化)然后在一個c文件中定義(該初始化的要初始化)。如果在頭文件中定義,則編譯的時候會出現(xiàn)重復(fù)定義的錯誤。如果只有頭文件中聲明就會出現(xiàn)沒有定義有警告。
   *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
       SYMBOL: K
       MODULE: 222.obj (222)
出現(xiàn)上述錯誤則是因?yàn)樽兞縦重復(fù)定義,把你的頭文件中的變量定義前加extern(只是變量聲明不用初始化),再在某一個你要調(diào)用該變量的c文件的程序之前再定義(注意第一個調(diào)用的c文件要負(fù)責(zé)附帶初始化該變量,其他調(diào)用的c文件就不需要初始化過程啦)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表