mcucludet 发表于 2020-4-30 16:41 已经解决了,只要别在C文件直接调用别的C文件,只调用那些C文件对应的头文件就行,就不会出现重复定义问题了 ![]() |
要学会使用 #ifdef 这些条件预编译 |
黄youhui 发表于 2020-4-30 15:36 好的,万分感谢 |
嘿嘿嘿a 发表于 2020-4-30 16:10 别全一股脑加上,必须有一个确切。其他文件需要。不然大家都找其他文件最后都找不到。楼主可以看下该词解释。 |
piliming 发表于 2020-4-30 15:33 我试了不行的 |
每个C文件的函数,加extern |
重复定义可以是函数名重复定义,变量重复定义。避重定义的方法: 1不要在.h文件里面定义全局变量,在,c文件的全局变量要和局内变用不同方式命名,比如全局变用下划线开头 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文件,如果要调用就在.c文件里面加,我以前被这个害惨了 4.函数名重复定义,这个在相同的函数名后面加_1 _2既可以阻止命名想通了 5慎用extern关键字,别随意将其他文件的变量引进 这只是我所知道的,可能并不完全,希望能帮到你 |