-3

プロジェクトのすべてのファイルで構造体のインスタンスを使用して、各ヘッダーファイル内で構造体を宣言します。

私の質問は:それを行うためのより簡単で自動的な方法はありますか?

ここに例があります:

さて、私は次のようなプロジェクトを持っています:main.c func1.cfunc2.cfunc3.cを含むmy_project。メインファイルでtxtファイルを読み取り、構造体ベクトルにデータを保存します。

for(i=0;i<MAX;i++){ 
  fscanf(f,"%s",&s[i].nome); 
  fscanf(f,"%d",&s[i].id); 
  fscanf(f,"%d",&s[i].quantidade); 
  fscanf(f,"%d",&s[i].lim_min); 
  fscanf(f,"%f",&s[i].consumo_med); 
} 

そして私が欲しいのはfunc2.cとfunc3.cの構造体ベクトルを使うことです

ehstはそれを行うための最良の方法ですか?

4

2 に答える 2

2

おそらくvector.hと呼ばれるヘッダーでstructvectorを定義してから、各ソースファイル(または各ソースファイルにすでに含まれているヘッダー)にvector.hを含めることができます。これはそれを行うための一般的な方法です。これには、構造体ベクトルを定義するテキストが1つの場所vector.hにのみ表示されるという利点があります(これにより、定義が1つのソースファイルで編集され、別のソースファイルでは編集されない場合に発生するエラーが回避されます)。また、Cは#include以外の定義をインポートする方法を提供していないため、これが基本的に唯一の方法です。

于 2012-06-15T03:24:13.663 に答える
1

funcXYZ.c私はあなたがあなたが含めているあなたのファイルに関数宣言を持っていると思いますmain.cか?適切な構造体を引数として取るように関数をコーディングしてから、で作成した構造体でそれらの関数を使用することができますmain

なんらかの理由で逆の場合、つまりに含める場合はmain.cfuncXYZ.cを使用できますextern

于 2012-06-15T01:35:06.977 に答える