|
mcucludet 發(fā)表于 2020-4-30 16:41 已經(jīng)解決了,只要別在C文件直接調(diào)用別的C文件,只調(diào)用那些C文件對應(yīng)的頭文件就行,就不會出現(xiàn)重復定義問題了 ![]() |
| 要學會使用 #ifdef 這些條件預編譯 |
黃youhui 發(fā)表于 2020-4-30 15:36 好的,萬分感謝 |
嘿嘿嘿a 發(fā)表于 2020-4-30 16:10 別全一股腦加上,必須有一個確切。其他文件需要。不然大家都找其他文件最后都找不到。樓主可以看下該詞解釋。 |
piliming 發(fā)表于 2020-4-30 15:33 我試了不行的 |
| 每個C文件的函數(shù),加extern |
|
重復定義可以是函數(shù)名重復定義,變量重復定義。避重定義的方法: 1不要在.h文件里面定義全局變量,在,c文件的全局變量要和局內(nèi)變用不同方式命名,比如全局變用下劃線開頭 2宏定義盡量放在.c文件,如果要在.h文件里存放宏定義最好在加上附屬名字,比如 #define LCD_RST_PORT GPIOB #define IIC_1_SDA_PORT GPIOC #define SPI1_SDA_PORT GPIOA IIC和SPI都有SDA 和SCK引腳并且很多單片機不止一個SPI和IIC(模擬IIC硬件IIC) 如果在在.h文件宏定義不加附屬名字就很容易重復定義 3.在h文件里面不要隨便包含.h文件,如果要調(diào)用就在.c文件里面加,我以前被這個害慘了 4.函數(shù)名重復定義,這個在相同的函數(shù)名后面加_1 _2既可以阻止命名想通了 5慎用extern關(guān)鍵字,別隨意將其他文件的變量引進 這只是我所知道的,可能并不完全,希望能幫到你 |
Powered by 單片機教程網(wǎng)