重复定义错误的常见原因:
1)重复定义可能是自己(在不同源文件里)定义的两个东西采用了同样的名字,或者是自己定义的东西恰好与C语言系统内部定义的某个东西重名。这时都需要改名字。
2)可能你在一个文件里定义了某个变量,而在另一个文件里需要使用它,但却忘记在变量说明前加 extern 关键字。
3)有些连接程序只按照外部名字的前X个(常见的是前6个,这是C语言标准的最低要求)字符考虑连接问题。如果你程序里有多个对象前6个字符相同,或者恰好某个对象名字的前6个字符与编译系统所提供模块里的某个名字相同,那么就可能出问题。
解决办法:找出出现冲突的名字,系统地将它们改为另外的名字。请注意,在改名字时一定要特别小心,如果更改不当或者不彻底,就会引进错误(某个使用实际用的可能不是你所希望的东西)。
利用C语言的static功能,将所有只在一个文件里使用的外部对象定义为static,可以避免自己在多个文件里定义的东西互相冲突(即使是用同样的名字,如果都是static也不会冲突,因为static的外部名字只在本文件里可以看见)。
|