社区
C语言
帖子详情
vc连接时报错:symbol“_xxxxxx”had been defined in cc_main.obj
floyd_idiot
2006-04-27 11:23:04
救急
!!!!!!!!!
...全文
231
12
打赏
收藏
vc连接时报错:symbol“_xxxxxx”had been defined in cc_main.obj
救急 !!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
铖邑
2006-04-28
打赏
举报
回复
楼上的,如果在头文件里定义了标识符的话,加上#ifndef #define是没有用的。那个只是用来避免同一个头文件被重复包含的。
比如,某个单元文件包含了a.h b.h,而a.h b.h都包含了c.h,该单元文件在包含a.h时已经隐含了c.h,所以在包含b.h时就发生了重复包含c.h的错误。你所说的那种解决办法只能用来解决这种情况下的问题。
楼主的问题可能是这样的:
这里只是举个例子吧
假设有个头文件a.h定义了这样的变量
#ifndef A_H
#define A_H
int BufferSize;
#endif
然后,假设有2个单元文件a1.cpp a2.cpp都包含了这个头文件,编译的时候,由于头文件是先合并到单元文件然后进行编译的,就等于说这2个单元文件实际上都有int BufferSize;这个定义。编译的时候没有问题,也没有发生重复包含的情况。但是链接的时候,链接器发现在a1 a2的目标文件中都有int BufferSize;这个定义,于是就报错。
所以,变量不要在头文件中定义,但是常量可以(编译器对常量做了专门的处理)。在这个例子中,我们可以在a1.cpp定义变量,然后在头文件中写上一行声明extern int BufferSize;,这样其它文件就可以引用这个变量了。
TERRYYRRET
2006-04-28
打赏
举报
回复
重复定义错误
三文鱼也会飞
2006-04-28
打赏
举报
回复
可以再头文件中加
#ifndef _XXXX_H
#define _XXXX_H
**********************
#endif
goodluckyxl
2006-04-27
打赏
举报
回复
是连接器
铖邑
2006-04-27
打赏
举报
回复
你在2个单元里面定义了同一个标识符,编译没有问题,但是链接的时候就会出现这种错误。一般,如果你在头文件里面定义标识符的话,因为可能多个单元文件包含了这个头文件,就会出现这种问题。你仔细检查一下你的代码看看。
goodluckyxl
2006-04-27
打赏
举报
回复
重复定义了_xxxxxx
连接时编译器发现了多具有外部连接的****就报了
xombat
2006-04-27
打赏
举报
回复
把程序贴出来看看,否则去看看动态帮助,里面有很详细解释。
json_001
2006-04-27
打赏
举报
回复
我猜是重复包含,呵呵。
贴一些东西,也许大家可以更明白。
wind19
2006-04-27
打赏
举报
回复
在那个头文件里用#pragma once
jiongdy
2006-04-27
打赏
举报
回复
重复包含头文件的问题
我也遇到过
仔细看一下
gjianpro
2006-04-27
打赏
举报
回复
重复包含头文件的问题
在你的每个头文件里都加上#pragma once就好了
三文鱼也会飞
2006-04-27
打赏
举报
回复
extern 类型的问题
找到有重复的变量 再前面加上extern
Error: L6200E:
Symbol
__stdin multiply
defined
by stdio_streams.o 分析与解决
Error: L6200E:
Symbol
__stdin multiply
defined
(by stdio_streams.o and retarget.o). Error: L6200E:
Symbol
__stdout multiply
defined
(by stdio_streams.o and retarget.o). Not enough information to list ...
Error: L6200E:
Symbol
__stdout multiply
defined
(by stdio_streams.o and usart.o).
遇到问题: …\
OBJ
\LORA.axf: Error: L6200E:
Symbol
__stdout multiply
defined
(by stdio_streams.o and usart.o). 解决办法:勾选Use MicroLIB
STM32编译错误:…\
OBJ
\USART.axf: Error: L6200E:
Symbol
__stdout multiply
defined
STM32编译错误:…\
OBJ
\USART.axf: Error: L6200E:
Symbol
__stdout multiply
defined
(by stdio_streams.o and usart.o).
Symbol
__stdout multiply
defined
..\
OBJ
\Template.axf: Error: L6200E:
Symbol
__stdout multiply
defined
(by stdio_streams.o and usart.o).
关于..\
OBJ
\Template.axf: Error: L6200E:
Symbol
t multiply
defined
(by huidu.o and
main
.o).的问题
关于..\
OBJ
\Template.axf: Error: L6200E:
Symbol
t multiply
defined
(by huidu.o and
main
.o).的问题,仅供大家参考,只是一部分的原因,理性参考。 我自己定义了一个函数,而且在这个函数中用到了四个变量,当在...
C语言
70,034
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章