10

当结构在不同的文件中定义时,我在尝试让结构正常工作时遇到了一些麻烦。据我所知,错误告诉我该结构被定义了两次。我相信也许我可能需要在某个地方使用 extern ?我尝试过尝试并在 Google 上寻求帮助,但无济于事。

任何帮助将不胜感激,谢谢。我的所有四个文件都在下面。

文件:Foo.h

typedef struct
{
    int number;
} my_struct;    // Redefinition; different basic types

文件:Foo.c

#include "Foo.h"
#include "Bar.h"
#include <stdio.h>

my_struct test;

int main(void)
{
    test.number = 0;
    DoSomething(&test);
    printf("Number is: ", &test.number);
}

文件:Bar.h

#include "Foo.h"

void DoSomething(my_struct *number);

文件:Bar.c

#include "Bar.h"

void DoSomething(my_struct *number)
{
    number->number = 10;
}
4

1 回答 1

15

问题是你Foo.hBar.h. 并且Foo.hBar.h都包含在 中main.cpp,这导致my_struct在翻译单元中获得两次定义。有一个ifdef关于结构定义文件的指令。试试这个 -

#ifndef FOO_H
#define FOO_H

  typedef struct
  {
      int number;
  } my_struct;    

#endif
于 2012-05-20T03:39:27.530 回答