繁体   English   中英

重新定义;不同的基本类型(typedef struct)

[英]Redefinition; different basic types (typedef struct)

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

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

#ifndef FOO_H
#define FOO_H

  typedef struct
  {
      int number;
  } my_struct;    

#endif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM