構造体変数を宣言するヘッダーファイルfoo.hがあるとしましょう
#include <stdio.h>
typedef struct foo_struct foo_s;
foo_s foo_function(int a);
foo_s bar_function(int b);
そして、実際に構造を定義するソースファイルfoo.c
#include "foo.h"
struct foo_struct
{
int a;
int b;
};
foo_s foo_function(int a)
{
foo_s fs;
fs.a = a;
return fs;
}
ここで、別のソース ファイルbar.cのfoo.cで定義された構造にアクセスしたいので、次のことを試します。
#include "foo.h"
foo_s bar_function(int b)
{
foo_s fb;
fb.b = b;
return fb;
}
...そしてbar.c:3:7: error: return type is an incomplete typeで失敗します
問題の内容は理解できましたが、回避策はありますか?