| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
求助,c51頭文件的問題 | 
  
| 作者:guochao 欄目:單片機(jī) | 
新學(xué)C51遇到一個問題,我寫了一個頭文件,有函數(shù)的聲明和一個變量的聲明,然后兩個源文件都#include它,在頭文件中我已經(jīng)用#ifndef,#define,#endif,但是在編譯的時候還是說*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS 重復(fù)定義,后來我在定義的前面加上了extern就OK。 我想問已經(jīng)用了條件編譯怎么還是有這個問題啊?為什么只有變量有這個錯誤而函數(shù)沒有啊,多謝啊  | 
  
| 2樓: | >>參與討論 | 
| 作者: coke 于 2006/3/3 9:36:00 發(fā)布:
         re 最好將所有的變量只能在.C程序中定義. 在.h文件中聲明. 函數(shù)也是一樣的. 你在你的.h中用extern 聲明后被其他函數(shù)包含后.其他函數(shù)在連接時候就會自動到其他C文件中尋找該變量.  | 
  |
| 3樓: | >>參與討論 | 
| 作者: guochao 于 2006/3/3 11:25:00 發(fā)布:
         多謝,但這個問題還是不明白 舉例來說吧 頭文件 example.h #ifndef _I_ #define _I_ CHAR data i; void a (void); #endif 一個源文件: #include <example.h> main(){ a(); } 另一個源文件 #include <example.h> void a (void) { ; } 這樣也會出現(xiàn)重復(fù)定義的錯誤,暈啊  | 
  |
| 4樓: | >>參與討論 | 
| 作者: 陳雙君 于 2006/3/3 12:16:00 發(fā)布:
         這樣寫也能有用的啊. 這樣寫也能有用的啊. 什么情況下你用這個?? 這種也只是在平日里玩玩用的.  | 
  |
| 5樓: | >>參與討論 | 
| 作者: guochao 于 2006/3/3 12:21:00 發(fā)布:
         是沒用啊,就是為了說明這個問題啊 同一個頭文件被兩個源文件包含,已經(jīng)用了#ifndef,在編譯的時候還是出現(xiàn)了 MULTIPLE PUBLIC DEFINITIONS 這個錯誤  | 
  |
| 6樓: | >>參與討論 | 
| 作者: coke 于 2006/3/3 13:53:00 發(fā)布:
         re 我不知道你的 #ifndef _I_ #define _I_ 有什么作用. 在你的程序里根本就沒有#define _I_ 為不出錯. 干脆這么說吧. 任何函數(shù)和變量都不要在.h文件中定義. 任何函數(shù)和變量如果會被其他文件用到.就將他們在自己的.h文件中聲明. ok 如果想搞清楚.建議看看uc/os II. 有很好的例子.  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 | 
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號  |