|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 257
|
[C] Liste
sto scrivendo del codice che usa una lista con doppio link (precedente e successivo). Nel caso di rimozione di un elemento intermedio vorrei semplicemente reindirizzare i puntatori degli elementi precedente e successivo.
Codice:
dcc_struct_indice->prev->next=dcc_struct_indice->next; dcc_struct_indice->next->prev=dcc_struct_indice->prev; Anche con le partentesi idem, dove sbaglio ?
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario. Ultima modifica di buddace : 19-06-2007 alle 11:25. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quell'errore viene generato quando di un puntatore hai a disposizione la dichiarazione "anonima" dell'oggetto puntato, ad es:
struct mystruct; e non la definizione completa.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 257
|
In un file lista.h ho definito:
Codice:
typedef struct buffer_dcc_struct {
unsigned int dcc_byte1;
unsigned int dcc_byte2;
struct dcc_struct *next;
struct dcc_struct *prev;
} dcc_struct;
Codice:
dcc_struct *dcc_struct_indice,*temp;
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
...e la struct dcc_struct la definisci dove?
(hint: cambia la definizione di *prev e *next come struct buffer_dcc_struct)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Nov 2002
Messaggi: 257
|
Quote:
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario. |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 257
|
Riferita alla lista di prima, è giusta la sequente funzione ? Mi torna sempre 0.
Codice:
dcc_struct *newslot(void)
{
return (struct buffer_dcc_struct *)malloc(sizeof(struct buffer_dcc_struct));
}
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario. Ultima modifica di buddace : 19-06-2007 alle 14:14. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
E' giusta e non può ritornare NULL.
Nota che "struct buffer_dcc_struct" è necessario solo per dichiarare prev e next, in qualsiasi altra parte puoi usare il typedef dcc_struct.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 257
|
La funzione mi ritorna sempre 0 no NULL
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
NULL corrisponde a (void *) 0
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:41.




















