怎么解决这个问题*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: LED_DAT MODULE: .\Objects\led.obj (LED)
时间: 2023-01-11 10:55:36 浏览: 678
这个错误消息表明在编译项目时,在两个不同的源文件中都出现了名为 LED_DAT 的公共符号的定义。这意味着你的代码中存在多个文件定义了 LED_DAT 常量或变量。
要解决这个问题,需要找到这些重复定义的源文件,然后修改代码使得只有一个文件定义 LED_DAT。
举个例子,如果文件 A 和文件 B 都定义了 LED_DAT,你可以在文件 A 中删除 LED_DAT 的定义,然后在文件 B 中使用 extern 关键字声明 LED_DAT,这样就能够在文件 B 中使用文件 A 中的 LED_DAT 定义了。
关于 extern 关键字,它用于在 C/C++ 中声明一个变量或函数是在别的文件中定义的,并非在当前文件中定义。使用 extern 关键字声明的变量或函数在未定义的情况下会被视为 extern 类型,即全局变量。
相关问题
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_10US MODULE: LCD1602.obj (LCD1602) *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _DELAY_MS MODULE: LCD1602.obj (LCD1602) *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_DELAY_10US?MAIN
这些错误是由于在 LCD1602.obj 模块中有多个公共定义的符号 _DELAY_10US 和 _DELAY_MS 导致的。这可能是由于重复的定义或者不正确的模块导入引起的。而警告 L16 表示未被调用的段被忽略,这意味着该段的代码没有被执行。
要解决这些错误,你可以检查 LCD1602.obj 模块中是否存在重复的定义,确保每个符号只有一个定义。另外,还要确保正确导入模块并正确引用符号。
如果你能提供更多关于你的项目和代码的细节,我可以给出更具体的帮助。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: _delay_ms MODULE: .\Objects\demo_gpio.obj (DEMO_GPIO) DEFINED: .\Objects\system.obj (SYSTEM)这段报错什么意思
这段报错是指在程序中,_delay_ms这个函数被定义了多次,并且这些定义都是公共的(public)。其中一个定义在demo_gpio.obj文件中,另一个定义在system.obj文件中。这种情况是不允许的,因为程序不知道要使用哪个定义。为了解决这个问题,你需要检查代码,确保每个函数都只被定义了一次,并且在需要使用它的地方进行声明。你还可以考虑使用头文件来管理函数的声明和定义,以避免这种问题的发生。
阅读全文