学校の課題をいじっているので、編集中のソースコードを掲載するのは控えたいと思います。(身バレが怖いので)
VS2015 C言語(c++になっているっぽい?)
今までソースファイルを一つしか使っていなかったので、ファイル分割の練習がてらいろいろな場所で宣言・初期化を行っていた所、main()とは別の関数をまとめたソースファイル内で「式は完全なオブジェクト型へのポインターである必要があります」「C2037:未定義の構造体が指定されています」といったエラーを吐きました。
ここでソリューションのソースファイル構造を説明します......
init.c内で定義・宣言した構造体(もしくはその構造体型の変数?)が未定義とされていますが、同ファイル内で宣言した他のグローバル変数はmain.cでもfunction.cでも問題なく利用できています。
このことからincludeやヘッダでのextern指示子は恐らく問題ないだろうことがわかりますから、構造体の定義に問題があることは予想できるのですが、少しググった程度ではどう弄ってもエラーが解消されませんでした。
(似たようなエラーが違うファイルで起きるだけとか、未定義エラーが増えたとか...)
もっと根本的な、基本的な無知からくるエラーだと思うのですがどうでしょうか?
ご指導のほど宜しくお願いします......
//include.hの内容
#include "define.h"
//*** 宣言 *** 一部略
extern char readline[];
extern struct strtype_example;
extern struct strtype_example exList[EX_NUM];
//*** 関数群 *** 省略
//init.cの内容
#include <stdio.h>
#include "include.h"
struct strtype_example {
char *dataA;
char *dataB;
};
char readline[N] = { NULL };
struct strtype_example exList[EX_NUM];
//EX_NUMはdefine.hで定義されている