10

構造体が異なるファイルで定義されている場合、構造体を適切に機能させるのに少し苦労しています。私が知る限り、エラーは構造体が2回定義されていることを示しています。おそらくどこかで extern を使用する必要があると思いますか? 私は実験を試み、Google でヘルプを探しましたが、役に立ちませんでした。

どんな助けでも大歓迎です、ありがとう。私の4つのファイルはすべて以下にあります。

ファイル: 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.hですBar.hFoo.hとの両方Bar.hが に含まれているため、翻訳単位で定義が 2 回main.cpp取得されます。構造体定義ファイルmy_structにディレクティブを配置します。ifdefこれを試して -

#ifndef FOO_H
#define FOO_H

  typedef struct
  {
      int number;
  } my_struct;    

#endif
于 2012-05-20T03:39:27.530 に答える