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

标签 c struct typedef extern

当结构定义在不同的文件中时,我在尝试让结构正常工作时遇到了一些麻烦。据我所知,错误告诉我该结构被定义了两次不同的时间。我相信也许我可能需要在某个地方使用 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;
}

最佳答案

问题是您在 Bar.h 中有 Foo.hFoo.hBar.h 都包含在 main.cpp 中,这导致 my_struct在翻译单元中定义两次。在结构定义文件周围有一个 ifdef 指令。试试这个 -

#ifndef FOO_H
#define FOO_H

  typedef struct
  {
      int number;
  } my_struct;    

#endif

关于c - 重新定义;不同的基本类型(typedef 结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670596/

相关文章:

c - char 和 short 在赋值表达式中被降级之前会被提升为 int 吗?

c++ - 在几乎相同的结构之间传递成员值

c++ - 函数重载时的 Typedef 编译错误

C++ 疯狂 typedef : what is the point of allowing this syntax by the Standard?

c - 有没有办法查看 ctype.h 中的类型中有哪些字符?

传递给函数时,字符数组不显示

c - 字符串不打印

C++ 结构大小不等于 C++/CLI 中的 C++ 结构大小?

c - 禁止指针和整数之间的比较

c++ - 您能告诉我为什么出现此错误吗?它涉及到函数指针