Hallo zusammen,
da ich Neuling bin erstmal, vielen Dank für die ganzen Tipps, die ich hier schon gefunden habe. Großartiges Forum.
Leider aber konnte ich mein aktuelles Problem nicht finden.
Also die Programmiersprache ist C und ich möchte in mehreren c-Dateien Zugriff auf eine 3D-Matrix haben.Also habe ich eine header datei erstellt (header.h)
Es handelt sich dabei um ein Gitter, das für jeden Matrix-Eintrag 3 Werte (x,y,z-Wert) hat.
Da habe ich mir gedacht, dass es schön übersichtlich ist, wenn ich das zu einer struct mesh zusammenfasse.
Innerhalb der struct mesh definiere ich nun mittels Pointer die Matrix, die variabel in der Größe ist.
Mittels malloc wird die Größe später definiert.
Nun ist das Problem, dass ich beim kompilieren folgende Meldung von eclipse erhalte:
"../src/header.h:41:11: error: variably modified ‘x’ at file scope"
(für y und z dasselbe).
Verschiebe ich die struct-Definition in die main-Funktion ist der Fehler weg, aber dann ist die struct leider nicht in allen c-Dateien verfügbar.
Kann mir jemand bei dem Problem helfen?
Hier der Code von header.h
in den c-Dateien steht logischerweise dann immer "#include "header.h"
da ich Neuling bin erstmal, vielen Dank für die ganzen Tipps, die ich hier schon gefunden habe. Großartiges Forum.
Leider aber konnte ich mein aktuelles Problem nicht finden.
Also die Programmiersprache ist C und ich möchte in mehreren c-Dateien Zugriff auf eine 3D-Matrix haben.Also habe ich eine header datei erstellt (header.h)
Es handelt sich dabei um ein Gitter, das für jeden Matrix-Eintrag 3 Werte (x,y,z-Wert) hat.
Da habe ich mir gedacht, dass es schön übersichtlich ist, wenn ich das zu einer struct mesh zusammenfasse.
Innerhalb der struct mesh definiere ich nun mittels Pointer die Matrix, die variabel in der Größe ist.
Mittels malloc wird die Größe später definiert.
Nun ist das Problem, dass ich beim kompilieren folgende Meldung von eclipse erhalte:
"../src/header.h:41:11: error: variably modified ‘x’ at file scope"
(für y und z dasselbe).
Verschiebe ich die struct-Definition in die main-Funktion ist der Fehler weg, aber dann ist die struct leider nicht in allen c-Dateien verfügbar.
Kann mir jemand bei dem Problem helfen?
Hier der Code von header.h
in den c-Dateien steht logischerweise dann immer "#include "header.h"
Code:
#ifndef HEADER_H
#define HEADER_H
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Variables
int int_interations;
int int_interationsStart;
int int_interationsEnd;
int int_myCPUID;
int int_MaxNumberCPUs;
int int_iMax;
int int_jMax;
int int_kMax;
//Variables of ConfigImport
struct strct_configuration
{
int int_totalIterations;
int int_iterationsSample;
int int_CPUsInIDirection;
int int_CPUsInJDirection;
int int_CPUsInKDirection;
double dbl_tau;
double dbl_machNumber;
double dbl_reynoldsNumber;
double dbl_prandtlNumber;
double dbl_kappaNumber;
double dbl_gasConstantNumber;
};
//Variables of MeshImport
struct strct_mesh
{
double (*x)[int_iMax][int_jMax];
double (*y)[int_iMax][int_jMax];
double (*z)[int_iMax][int_jMax];
};
#endif /*HEADER_H */