C/C++多重定义 Multi-defined解决方案

简介: Error: L6200E: Symbol fTable multiply defined (by ../../build/system/StateMachine.LPC1768.o and ../../build/main.LPC1768.o).

在编写mbed程序时,编译报错:
Error: L6200E: Symbol fTable multiply defined (by ../../build/system/StateMachine.LPC1768.o and ../../build/main.LPC1768.o).

当编译时提示这样的错误时,是因为框出来的变量被重复定义了,我们要从定义的地方解决。

1.首先,我们全局搜索这个变量(ctrl+f),搜索这个变量在工程中被定义的位置

解决方法1:
如果发现有多个文件中都有定义过,例如在a.c和b.c中都有int a = 0;,那么我们要删除只剩一个地方定义即可
3.如果发现变量是在头文件被定义的,那么我们要将其改到.c中定义,在头文件中定义是不可以的,例如a.h中int a = 1;
那么我们在所有引用这个a.h的.c中都会重复定义int a,所以我们要改到.c中定义
4.当只剩一个地方定义后,我们在其他文件中要使用就要extern int a;来使用这个变量

解决方法2:
使用宏定义定义变量,其余头文件使用#ifndef或#ifdef避免多重定义

Reference:
https://blog.csdn.net/MoreXD/article/details/121979087

相关文章
|
6月前
|
C++
C++中类的定义与使用
C++中类的定义与使用
155 2
|
21天前
|
安全 程序员 编译器
【实战经验】17个C++编程常见错误及其解决方案
想必不少程序员都有类似的经历:辛苦敲完项目代码,内心满是对作品品质的自信,然而当静态扫描工具登场时,却揭示出诸多隐藏的警告问题。为了让自己的编程之路更加顺畅,也为了持续精进技艺,我想借此机会汇总分享那些常被我们无意间忽视却又导致警告的编程小细节,以此作为对未来的自我警示和提升。
|
30天前
|
Rust 资源调度 安全
为什么使用 Rust over C++ 进行 IoT 解决方案开发
为什么使用 Rust over C++ 进行 IoT 解决方案开发
58 7
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
23 2
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
51 1
|
6月前
|
C++
C++程序中的类声明与对象定义
C++程序中的类声明与对象定义
68 1
|
30天前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
49 0
|
2月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
4月前
|
编译器 C++ 运维
开发与运维函数问题之函数的返回类型如何解决
开发与运维函数问题之函数的返回类型如何解决
36 6
|
3月前
|
编译器 C++
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
43 0