|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
新手求助c51頭文件問題 |
| 作者:guochao 欄目:新手園地 |
新學(xué)C51遇到一個問題,我寫了一個頭文件,有函數(shù)的聲明和一個變量的聲明,然后兩個源文件都#include它,在頭文件中我已經(jīng)用#ifndef,#define,#endif,但是在編譯的時候還是說*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS 重復(fù)定義,后來我在定義的前面加上了extern就OK。 我想問已經(jīng)用了條件編譯怎么還是有這個問題?為什么只有變量有這個錯誤而函數(shù)沒有啊,多謝啊 |
| 2樓: | >>參與討論 |
| 作者: guochao 于 2006/3/3 11:38: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ù)定義的錯誤,暈啊 |
|
| 3樓: | >>參與討論 |
| 作者: computer00 于 2006/3/3 12:37:00 發(fā)布:
不是這樣弄法的。 我示范一下: /********************** 頭文件 example.h **********************/ #ifndef __EXAMPLE_H__ #define __EXAMPLE_H__ //variables extern CHAR data i; //functions void a(void); #endif /********************** example.c **********************/ CHAR data i; // void a(void) { //Your code } /******************** main.c ********************/ //other HEAD files #include "example.h" void main(void) { //Your code........ i=?? ??=i; a(); } /************************ TEST.c ***********************/ //other HEAD files #include "example.h" void TEST(void) { i=??; ??=i; a(); } |
|
| 4樓: | >>參與討論 |
| 作者: likee 于 2006/3/3 22:32:00 發(fā)布:
不要笑 看不懂和guochao的有什么區(qū)別. |
|
| 5樓: | >>參與討論 |
| 作者: computer00 于 2006/3/3 23:31:00 發(fā)布:
當(dāng)然不一樣,變量的定義只放在一個C文件中, 變量的i的定義,只放在了example.c中,而在example.h中做了聲明,extern CHAR data i,這樣在需要用到的地方使用include "example.h"就可以了。 如果把定義放在.h文件中,當(dāng)然會出現(xiàn)重復(fù)定義的錯誤。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |