2

好的,所以我有一个项目,并且我有一些需要在各种其他文件中共享的辅助功能。将其称为 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

List 用于 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 ...”),我正在使用

4

0 回答 0