2017-08-03 1 views
0

Ich versuche, eine Struktur mit einem Array innerhalb zu erstellen. Die Array-Größe, hoffe ich, sollte zur Kompilierzeit eingestellt werden. Das ist hart codiert, aber verwendet eine Variable, so dass ich es leicht im Code ändern kann. Problem ist, dass ich Linker-Fehler bekomme, wenn ich const int in der Kopfzeile vor der Strukturdefinition verwende. Hier ist mein Code:Wie deklariere ich ein Array mit const int Elemente in einer Struktur

aus der Header-Datei:

const int t_Module_qInternalParams =64; 

typedef struct Module{ 
    double internalParams[t_Module_qInternalParams]; 
} t_Module; 
+2

Warum nicht ein '# define' verwenden? –

+0

Dank @FelixPalmen immer noch den Hang des Stack-Überlauf – matt

+0

'Das ist es hart codiert, aber verwendet eine Variable, so dass ich es einfach im Code ändern kann. '... was ist das? –

Antwort

2

Diese:

const int t_Module_qInternalParams = 64; 

Ist ein Konstante in dem Sinne, dass das Objekt nach der Initialisierung nicht geändert werden kann, aber es ist immer noch eine Variable. Insbesondere t_Module_qInternalParams ist nicht eine Kompilierzeitkonstante, wie in Ihrem Deklarator erforderlich.

Eine einfache Lösung ist stattdessen einen Präprozessormakro zu verwenden:

#define MODULE_INTERNALPARAMS 64 

Dies erweitert nur zu 64vor die Kompilierung Phase beginnt, und natürlich 64ist eine Kompilierung-Konstante .

+0

DANKE. Ich fange gerade erst an! – matt

Verwandte Themen