C中的奇数重复符号错误

时间:2013-09-12 20:20:22

标签: c gcc compiler-errors duplicates symbols

好的,所以我有一个项目,我有一些帮助函数,需要在各种其他文件中共享。将其命名为Helper.c /.h,并使用相应的编译标志以避免多次包含(#ifndef SymbolName #define Symbolname blah blahblah #endif)。每个文件都有以下列方式的头文件:

#include ....
#include ....
#ifndef __FILENAME_H__
  #define __FILENAME_H__ //in each file(FILENAME is replaced for the current file's name)
  declarations of functions, types, etc.
#endif

我有一个比较函数,叫做dummyCompare(模板,所以在创建这个ADT的变量时,你需要提供自己的函数指针才能工作,所以在某些情况下我不需要特定的函数,只需一般的,所以这就是dummyCompare。 编译时得到的错误是:

gcc ./Helper.c ./LinkedList.c ./ABB.c ./AVL.c  -Wall -lm -D DEBUG -g
duplicate symbol _dummyCompare in:
    /var/folders/f2/nghjrbz915vbhjw_1gbb65sm0000gn/T//cc75R4sQ.o
    /var/folders/f2/nghjrbz915vbhjw_1gbb65sm0000gn/T//cc8jQwyE.o
ld: 1 duplicate symbol for architecture x86_64
collect2: ld returned 1 exit status

列表用于ABB中的树操作的非递归解决方案(ABB =西班牙语中的BST)/ AVL。现在使用Sublime Text 2,我得到“dummyCompare”

的以下搜索结果
Searching 8 files for "dummycompare"

/dir/ABB.c:
   81   if (abb != NULL) {
   82       if (ABB_getRoot(*abb) != NULL){
   83:          list = LL_newList(dummyCompare);
   84           LL_insert(list, 1, ABB_getRoot(*abb));
   85           

/dir/AVL.c:
   67   if (avl != NULL) {
   68       if (AVL_getRoot(*avl) != NULL){
   69:          list = LL_newList(dummyCompare);
   70           LL_insert(list, 1, AVL_getRoot(*avl));
   71           

/dir/Helper.c:
    2  
    3  /****************************************************************************
    4: *                                dummyCompare                                *
    5  *****************************************************************************
    6  *    Retorna si 2 dirrecciones son iguales, necesario para el funcionamiento *
    7  *    de la lista                                                             *
    8  ****************************************************************************/
    9: int dummyCompare(void * a, void * b) 
   10  {
   11   if (a == b) 

/dir/Helper.h:
    4   
    5   int getMax(int a, int b);
    6:  int dummyCompare(void * a, void * b);
    7  
    8  #endif

5 matches across 4 files

事情是我似乎无法理解什么是错的,为什么我得到这个错误。检查了很多其他问题,只有我发现的答案是(“使用#ifndef ...”),我正在使用

0 个答案:

没有答案