ファイルからデータを読み取って操作するコードを作成しています。アイデアは、グローバルな方法でデータをロードし、データに対していくつかの関数を使用して計算を実行することです。私が抱えている問題は、コンパイル時に次のエラーが発生することです。
' vertices' が宣言されていません (この関数で最初に使用されます)。
ヘッダー ファイルには次のものが含まれます。
typedef struct
{
double x;
double y;
double z;
} variable;
メインでは、malloc と、「頂点」と呼ばれるこの「変数」の配列を使用する関数を呼び出します。
int main (void)
{
variable *vertices = (variable*) malloc( 5000 * sizeof (variable) ) ;
load_file();
free(vertices);
return 0;
}
関数 load_file ():
FILE *fp1 ;
fp1 = fopen( 'file',"r");
if (fp1==NULL)
{
printf("File couldn't be opened or read!");
return 1;
}
int j = 0;
while(fscanf(fp1, "%lf %lf %lf ", &vertices[j].x, &vertices[j].y, &vertices[j].z ) == 3 )
{
j++;
}
fclose(fp1);
実際には、 malloc をload_fileに入れるとコンパイルされて動作しますが、問題は、データを使用する他のさまざまな関数があり、 load_file で解放するとすべてが失われることです。メインの上の typedef を再定義すると、「以前の定義はここにありました」というメッセージが表示され、変数の頂点を追加すると、メインの前に、大量のエラーが発生します。
どうすればそのような問題を解決できますか?