amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Hat Dice ne spezielle Zeigernotation? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

18.06.2013, 00:02 Uhr

Reth
Posts: 1753
Nutzer
Hallo zusammen,

ich versuche mich hin und wieder mal daran, die 1.48er Version von AMarquee Stück für Stück für AOS4 zu compilieren. Leider ist dies (wie immer bei solchen Sachen) mit einigen Problemen verbunden, die nun mühsam durch Logging oder was auch immer während der Laufzeit ausgemerzt werden müssen.

Als ich nun für die Serverkomponente damit angefangen habe, bin ich leider nur bis zur Initialisierung gekommen. Allerdings habe ich nun noch ohne detailliertes Debugging einen Verdacht bzw. eine Verständnisfrage.

Wenn ich es richtig beurteile war der Source für Dice ausgelegt und wurde mittels diesem kompiliert.

Nun ist mir aufgefallen, dass viele übergebene Zeiger bei ihrer Verwendung mit vorangestelltem &-Operator aufgerufen werden, z.B. wie hier (Auszug aus dem Originalsource):
C code:
void InitTransQueue(struct TransQueue * tq)
{
  NewList(&tq->list);
}


Ich bin immer noch C- bzw. C++-Laie, aber das Voranstellen dieses Zeichens bedeutet doch, dass hier der Adressoperator angewandt wird und damit doch dann die Adresse des Zeigers tq ermittelt wird (und damit ein Zeiger auf einen Zeiger), oder nicht?
Dann darf ich doch von dort aus nicht auf Elemente der Struktur TransQueue zugreifen!? Ich würder hier den &-Operator einfach weglassen, dann müsste doch der Zugriff auf die Elemente der Struct TransQueue problemlos möglich sein (sofern sie an dieser Stelle im Speicher vorhanden und initialisiert ist).
Oder versteh ich hier was falsch?

Da diese Art der Notation/Aufrufe aber gehäuft im Source vorkommt glaube ich erst einmal nicht an einen Fehler.

Könnt ihr mir da weiterhelfen und etwas mehr Einblick geben, was hier genau gemacht wird bzw. passiert?

Danke schon mal!

Ciao

[ - Antworten - Zitieren - Direktlink - ]

18.06.2013, 08:06 Uhr

thomas
Posts: 7649
Nutzer
Zitat:
Original von Reth:
das Voranstellen dieses Zeichens bedeutet doch, dass hier der Adressoperator angewandt wird und damit doch dann die Adresse des Zeigers tq ermittelt wird (und damit ein Zeiger auf einen Zeiger), oder nicht?


Nein. Der -> Operator bindet stärker als der & Operator. Deshalb bedeutet &tq->list das gleiche wie &(tq->list). D.h. es wird die Adresse des Elements list in der struct TransQueue ermittelt, auf das der Zeiger tq zeigt.

Und das funktioniert mit Sicherheit auch in GCC.





--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

18.06.2013, 18:57 Uhr

Reth
Posts: 1753
Nutzer
@thomas:
Ah, danke! An Operatorrangreihenfolgen hatte ich schon gar nicht mehr gedacht.

Die schlechte Nachricht für mich bleibt dann aber leider, mit tonnenweise Ausgabezeilen das Debugging in den Code einzubauen (denn einen Serverprozess mit Hilfe von db101 zu debuggen hab ich noch nicht geschafft). Es sei denn jmd. hat noch ne hilfreiche Idee zum Thema Debugging?

[ Dieser Beitrag wurde von Reth am 21.06.2013 um 09:34 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Hat Dice ne spezielle Zeigernotation? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1997-2019 by amiga-news.de - alle Rechte vorbehalten.
.