1

スタック オーバーフローに関するよくある質問ですが、私の場合は奇妙で、適切な回答が見つからなかったので、まだ投稿しています。

これは大規模なプロジェクトですが、この問題のために含まれているファイルは、types.h、glob.h、test.c、test.h、および main.c の 5 つだけです。

types.hで、構造体を定義するとします。

struct s_foo {
    int a;
};

glob.h

struct s_foo *foo;

test.h

#ifndef GLOB_H
#define GLOB_H
extern struct s_foo *foo;
#endif

test.c

#include "types.h"
#include "test.h"
struct s_foo *foo = NULL;

main.c

#include "types.h"
#include "test.h"
...
foo = (struct s_foo *)malloc(sizeof(struct s_foo));

このプログラムは gcc でコンパイル可能で、問題なく動作しますが、Eclipse によって、main.c でシンボル「foo」を解決できないという厄介なエラーが表示されます。

Eclipse でこのエラーが発生する理由を誰か教えてください。これは、変数 foo が複数定義されているためでしょうか?

ありがとう!

4

2 に答える 2

0

Visual Studio 2013 から移植されたコードについて、Eclipse で同じ問題が発生しています。私の推測では、コンパイラがシンボル スキャンを適切に複数回実行できなかったと考えられます。したがって、私の最終的な解決策は、エラーが表示されるファイルに宣言をもう 1 つ追加することです。あなたの場合、追加することをお勧めします

extern struct s_foo *foo;

ファイル main.c のエラー ステートメントの前

于 2015-10-07T00:33:26.880 に答える