- ベストアンサー
分割コンパイルについて
- 分割コンパイルの使い方と問題点について解説します。
- 分割コンパイルをするとコンパイルエラーが発生する原因と対処法を紹介します。
- 分割コンパイルのための宣言や定義の書き方について詳しく説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
のんのん。 今回define.hでやることは ・構造体の定義 ・グローバル変数のexter ・関数プロトタイプ宣言 の3つ。 グローバル変数の実体定義はdefine.cppでやればいい。 実体定義というのは 型名 変数名(=初期値); というやつ。 int a; とか struct Parameter Tmp[NUM]; とかな。 あと、C++なら構造体変数の定義のときにstructはつけなくてもいい。 Parameter Tmp[NUM]; で通る筈。
その他の回答 (2)
- Trick--o--
- ベストアンサー率20% (413/2034)
コンパイルしようとしてみました。 以下、出力 Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland main.cpp: エラー E2450 define.h 7: 未定義の構造体 'Parameter' エラー E2450 main.cpp 10: 未定義の構造体 'Parameter'(関数 main() ) エラー E2453 main.cpp 10: 'Parameter' 型のサイズは未知あるいはゼロ(関数 main() ) エラー E2315 main.cpp 10: 型が宣言されていないため 'c' は 'Parameter' のメンバーではない(関数 main() ) エラー E2450 main.cpp 13: 未定義の構造体 'Parameter'(関数 main() ) エラー E2453 main.cpp 13: 'Parameter' 型のサイズは未知あるいはゼロ(関数 main() ) エラー E2315 main.cpp 13: 型が宣言されていないため 'c' は 'Parameter' のメンバーではない(関数 main() ) *** 7 errors in Compile *** a.cpp: エラー E2450 define.h 7: 未定義の構造体 'Parameter' エラー E2450 a.cpp 11: 未定義の構造体 'Parameter'(関数 aaa() ) エラー E2453 a.cpp 11: 'Parameter' 型のサイズは未知あるいはゼロ(関数 aaa() ) エラー E2315 a.cpp 11: 型が宣言されていないため 'c' は 'Parameter' のメンバーではない(関数 aaa() ) *** 4 errors in Compile *** b.cpp: エラー E2450 define.h 7: 未定義の構造体 'Parameter' エラー E2450 b.cpp 10: 未定義の構造体 'Parameter'(関数 bbb() ) エラー E2453 b.cpp 10: 'Parameter' 型のサイズは未知あるいはゼロ(関数 bbb() ) エラー E2315 b.cpp 10: 型が宣言されていないため 'c' は 'Parameter' のメンバーではない(関数 bbb() ) *** 4 errors in Compile *** define.cpp: エラー E2450 define.h 7: 未定義の構造体 'Parameter' *** 1 errors in Compile *** どのファイルでも 「未定義の構造体 'Parameter'」と言われていますね。 define.hの extern struct Parameter Tmp[NUM]; の前に、構造体の定義を入れましょう。
お礼
わざわざ試していただいてありがとうございます。 構造体の定義をdefine.cppから取り除きdefine.hで すれば良いということですよね? しかし構造体を以下のように定義してみても通りませんでした。 ///////////////////////// // define.h ///////////////////////// #define NUM 100 extern int a; extern int b; struct Parameter { int c; }; struct Parameter Tmp[NUM]; extern struct Parameter Tmp[NUM]; void aaa( void ); void bbb( void );
- na0Nao
- ベストアンサー率0% (0/2)
構造体の定義をヘッダ内でするとどうなります?
お礼
ありがとうございます!大変助かりました。 おかげで上手くいきました。