找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

当C文件中含有多种类似图中的.C和.h文件时,需要怎么做可以避免类似重复定义的问题?

查看数: 3672 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-4-30 14:53

正文摘要:

回复

ID:711376 发表于 2020-5-3 19:13
mcucludet 发表于 2020-4-30 16:41
别全一股脑加上,必须有一个确切。其他文件需要。不然大家都找其他文件最后都找不到。楼主可以看下该词解 ...

已经解决了,只要别在C文件直接调用别的C文件,只调用那些C文件对应的头文件就行,就不会出现重复定义问题了
ID:462827 发表于 2020-4-30 18:33
要学会使用 #ifdef 这些条件预编译
ID:711376 发表于 2020-4-30 17:08
黄youhui 发表于 2020-4-30 15:36
重复定义可以是函数名重复定义,变量重复定义。避重定义的方法:

1不要在.h文件里面定义全局变量,在,c文 ...

好的,万分感谢
ID:700854 发表于 2020-4-30 16:41

别全一股脑加上,必须有一个确切。其他文件需要。不然大家都找其他文件最后都找不到。楼主可以看下该词解释。
ID:711376 发表于 2020-4-30 16:10
piliming 发表于 2020-4-30 15:33
每个C文件的函数,加extern

我试了不行的
ID:741674 发表于 2020-4-30 15:33
每个C文件的函数,加extern
ID:592807 发表于 2020-4-30 14:53
重复定义可以是函数名重复定义,变量重复定义。避重定义的方法:

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关键字,别随意将其他文件的变量引进

这只是我所知道的,可能并不完全,希望能帮到你

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表