struct ptr{
int node;
ptr *next;
ptr(){}
ptr(int _node, ptr *_next){ node=_node; next=_next; }
};
struct list_t{
ptr *sht;
int size;
void push(int node){
size++;
sht=new ptr(node,sht);
}
}shthead[100001], comp[200001], tree[200001];
Die Struktur ptr als verkettete Liste verwendet wird. Aber wenn ich den Code in gdb debugge, stellte ich fest, dass die ptr * 's alle in void * konvertiert wurden.
GDB Ausgang:C++: warum ein Selbst Zeiger einer Struktur automatisch auf void * ändert
(gdb) pt ptr
type = struct ptr {
int node;
void *next;
public:
ptr(void);
ptr(int, void *);
}
Ich kann aber noch die Daten der Struktur sehen, ob ich sie ptr verdeckte zurück * in gdb.
Was ist der Grund dafür bitte?
Ich benutze Arch Linux, GNOME, g ++ 4.5.0, gdb 7.1. Ohne irgendwelche Kompilierungsflags, aber ein -g.
This GDB was configured as "i686-pc-linux-gnu"
Es zeigt 'ptr *' auf meinem System. Welche Compilier-Flags hast du benutzt? Welche Version von g ++ und gdb? – Thomas
Seltsam, ich benutze auch gdb 7.1, aber g ++ 4.4.3. Die Releaseinformationen von 4.5 geben keinerlei Hinweis auf eine Änderung in dieser Richtung. http://gcc.gnu.org/gcc-4.5/changes.html – Thomas
Nur um mehr Datenpunkte mit gdb 7.0.1 auszufüllen. Ich bekomme die richtige Antwort mit g ++ 4.2.4 und 4.3.3 aber mit 4.5. 0 gdb zeigt den Zeiger als 'void *'. Sieht aus wie ein Fehler in gcc (oder gdb?) –