重新定义; 不同的基本类型(typedef结构)(Redefinition; different

2019-07-29 11:09发布

我有一个有点麻烦,试图让当他们在不同的文件中定义结构才能正常工作。 从据我所知道的,错误是告诉我,该结构被定义两个不同的时间。 我相信,也许我可能需要使用的extern地方? 我试图尝试和寻找在谷歌的帮助,但无济于事。

任何帮助都将非常感激,谢谢。 我的文件全部四个如下。

文件:foo.h中

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

FILE: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);
}

FILE:Bar.h

#include "Foo.h"

void DoSomething(my_struct *number);

FILE:bar.c

#include "Bar.h"

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

Answer 1:

问题是你有Foo.hBar.h 。 而且两者Foo.hBar.h被包含在main.cpp ,其结果得到my_struct转换单元中定义的两倍。 有ifdef周围结构定义文件指令。 试试这个 -

#ifndef FOO_H
#define FOO_H

  typedef struct
  {
      int number;
  } my_struct;    

#endif


文章来源: Redefinition; different basic types (typedef struct)