PDA

Visualizza la versione completa : [C] Dichiarare strutture globalmente


goatboy
13-06-2012, 14:43
Salve a tutti. Oggi ho sostenuto l'esame di Algoritmi & Strutture Dati e sono perplesso riguardo ad una cosa. Venivano dati dei prototipi di funzione che andavano necessariamente implementate, ma a nessuna di queste funzioni veniva passata la lista come parametro. Il prof ha detto di dichiarare le strutture globalmente. Ora, io le strutture le ho sempre dichiarate fuori dal main, ma la dichiarazione:


TList lista=NULL;

l'ho sempre scritta nel main. Come la si dichiara globalmente?
Io ho scritto la stessa cosa, fuori dal main, ma mi dava errori, che ora neanche ricordo bene. Mi pare non riconosceva i membri della struttura.

Va dichiarata in un modo particolare?
Spero di essere stato chiaro :D

Stoicenko
13-06-2012, 15:23
Non vorrei dire baggianate ma fuori dal main deve essere per forza statica per essere dichiarata in quanto non può essere dichiarata come istanza di nulla.

Who am I
13-06-2012, 15:37
Va dichiarara allo stesso modo di come l' hai dichiarata, pero' fuori dal main. Fammi vedere il codice che ti crea problemi.


PS: Non e' obbligatorio che una variabile globale sia statica.

goatboy
13-06-2012, 16:43
Originariamente inviato da Who am I
Va dichiarara allo stesso modo di come l' hai dichiarata, pero' fuori dal main. Fammi vedere il codice che ti crea problemi.


PS: Non e' obbligatorio che una variabile globale sia statica.

Purtroppo non ho tutto il codice. La struttura l'ho scritta così, se non sbaglio:



struct SKey{
int codice;
};
typedef struct SKey TKey;

struct SInfo{
TKey codice;
char modello[MAXLEN];
char casa[MAXLEN];
int prezzo;
int occorrenze;
};
typedef struct SInfo TInfo;

struct SValues{
TInfo info;
struct SValues *link;
};
typedef struct SValues TValues;
typedef struct TValues* TList;

TList list;


Tutto fuori dal main, però non mi riconosceva i membri della struttura TList. Ogni volta che scrivevo tipo "list->info.prezzo" mi diceva "info non riconosciuto come membro di una struttura o "union"" :confused:

Who am I
13-06-2012, 17:12
Scrivi:



(list->info).prezzo


L' operatore . ha la precedenza sull' operatore -> .

goatboy
13-06-2012, 17:34
Originariamente inviato da Who am I
Scrivi:



(list->info).prezzo


L' operatore . ha la precedenza sull' operatore -> .

Ahhh :( :(
Troppo tardi, l'esame era stamattina. Buono a sapersi per la prossima volta :dhò:

Loading