MDK提示错误函数 XXX': redefinition和missing的解决办法

在使用MDK开发工具进行单片机程序设计时,可能会遇到编译器给出的两种常见错误提示:“redefinition”和“missing function-prototype”。这两种错误提示分别表明函数重定义和函数原型缺失,它们均属于链接器错误,而非编译器错误。本文将详细解释这两种错误的原因及解决办法,并提供一些编程实践中的建议。 错误“redefinition”指的是在同一个作用域内,一个函数被定义了多次。在本例中,函数`EEprom_config`在文件`APP\INITIALIZE.C`的第91行和第95行被错误地重定义了。根据错误信息,可以推断在其他`.c`文件或者当前`.c`文件的其他位置,`EEprom_config`函数被重新定义了。为了修复这个错误,开发者需要确认函数`EEprom_config`只有一个定义点,其他地方的声明都应当是函数原型。 另一个错误是“missing function-prototype”,即函数原型缺失。在本例中,`APP\INITIALIZE.C`的第32行显示`EEprom_config`函数缺少函数原型。函数原型告诉编译器该函数的存在、返回类型和参数列表,是连接函数声明和定义的桥梁。在C语言中,如果没有在使用函数的地方提供函数原型,则该函数的调用点可能在编译时不会检查参数的类型,这会导致在链接时出现未定义的引用错误。 解决这两个问题的方法是: 1. 确保`EEprom_config`函数只在一个地方有完整的函数定义,例如在一个`.c`文件中。其他使用该函数的地方应该只包含函数的原型声明。 2. 在头文件(`.h`)中声明`EEprom_config`函数。这样做不仅解决了“missing function-prototype”的问题,还可以确保函数的调用点可以正确地检查参数类型,加强了代码的健壮性。 3. 包含头文件。在每一个使用`EEprom_config`函数的`.c`文件中,通过`#include`指令包含该函数的头文件。 以下是一个实践案例: 在一个头文件中声明`EEprom_config`函数: ```c // EEprom_config.h #ifndef EEPRom_CONFIG_H #define EEPRom_CONFIG_H // 函数原型声明 void EEprom_config(void); #endif ``` 然后,在一个源文件中定义`EEprom_config`函数: ```c // EEprom_config.c #include "EEprom_config.h" // 函数定义 void EEprom_config(void) { // 函数实现 } ``` 在需要使用该函数的源文件中包含头文件: ```c // Initialize.c #include "EEprom_config.h" // 参数初始化函数 void InitParameter(void) { EEprom_config(); // 调用函数 } ``` 在上述代码中,`EEprom_config`函数仅在`EEprom_config.c`中定义,且在头文件`EEprom_config.h`中声明,这样其它源文件如`Initialize.c`就可以通过包含该头文件来正确地使用`EEprom_config`函数,而不会产生重复定义和缺少原型声明的问题。 提醒开发者在使用MDK或其它编译器进行开发时,应该遵循良好的编程规范,包括: - 使用头文件来声明外部函数。 - 避免在同一作用域内多次定义同一个函数。 - 在编程中应当注意区分声明(prototype)和定义(definition)。 - 通过编写简单的Makefile或项目脚本,自动化编译链接过程,以减少此类错误的发生。 在MDK开发环境中,遇到函数重定义和缺少函数原型的错误时,应该通过声明函数原型在头文件中,并在适当的源文件中提供函数定义,来确保程序的正确链接和高效率的开发过程。


























- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于plc的车库自动门控制技术方案设计书.doc
- 关于计算机移动数据库的应用分析.docx
- 钢结构住宅新型可拆卸钢筋桁架楼层板制研.pptx
- 《计算机软件基础》实验要求201110.doc
- 现浇无网聚苯板外保温施工工法.doc
- 中国网络安全发展趋势分析报告.docx
- 嵌入式系统和linux工程师面考试.doc
- MVB总线在地铁列车控制系统中的应用.docx
- 基于易班平台的网络思政工作研究.docx
- TCP网络门禁系统设计措施.doc
- 《工程项目管理》分析.doc
- 网络信息工程在医院发展中的作用.docx
- 项目管理PMP精要(中英文对照).doc
- 《计算机基础知识》doc电子书.doc
- 单片机多功能电称研发设计方案.doc
- WEB数据库原理与应用-学习情境3(2).doc



- 1
- 2
前往页