Den typedef hast Du wahrscheinlich genau von der verlinkten Seite - ein
Abschnitt darunter.
Lies mal den Text dazu. Die genaue interne Struktur wird in der
Dokumentation absichtlich nicht beschrieben. Zu welchem Zweck, lasse ich
hier mal offen. Das wird klarer wenn Du weiterliest und wenig darüber
nachdenkst.
Aufgrund des DEFINES aber ist zumindest klar, dass sie nicht, wie Du
annimmst "leer" ist und die Größe Null hat.
Wenn Du es genauer wissen wilst, dann schaue in den Quellcode.
Bitflüsterer schrieb:> Die genaue interne Struktur wird in der> Dokumentation absichtlich nicht beschrieben.
Das ist mir schon soweit klar. Aber wenn ich in C programmiere, verwende
ich ja nur die Header-Files. Dann ist das struct scheinbar leer, was
macht dann das Makro. (Meist verwendet GTK ja Pointer und stellt
irgendwelche Funktionen bereit, die das Objekt initialisieren, etwa wie
gtk_button_new() oder so. Aber hier mit diesem Macro? Und ich denke
schon, es soll so auch vom Anwender verwendet werden, nicht etwa nur
intern von den GTK Entwicklern.) Ich verstehe es momentan nicht.
Stefan schrieb:> Aber wenn ich in C programmiere, verwende> ich ja nur die Header-Files. Dann ist das struct scheinbar leer
Wieso hältst du an diesem Blödsinn fest, statt einfach mal
nachzuschauen, obwohl dir schon gesagt wurde, daß dem nicht so ist?
Die gtype.h und gvalue.h findest du schon selbst, oder?
Stefan schrieb:> Bitflüsterer schrieb:>> Die genaue interne Struktur wird in der>> Dokumentation absichtlich nicht beschrieben.>> Das ist mir schon soweit klar.> Aber wenn ich in C programmiere, verwende> ich ja nur die Header-Files.
Wieso "nur"? Genau die verwendest Du. Aber nicht "nur". Sondern auch
"C"-Files.
> Dann ist das struct scheinbar leer, ...
Der Begriff "scheinbar" ist hier nicht anwendbar. Entweder ist eine
Struktur leer oder sie ist es nicht.
> ... was> macht dann das Makro.
Der Schluss geht so: Das Makro hat nur dann einen Sinn, wenn die
Struktur nicht leer ist. Ergo, ist die Struktur nicht leer. Genaueres
sehe ich dann in dem Header-File.
> Wobei das aber eher die Ausnahme für GTK3 ist, meist sind> opaque Typen nur in den .c Dateien explizit spezifiziert, ...
Das mag sein, was immer Du damit meinst. :-) Hier geht es um
"Deklarationen" (oder Definitionen). Sowas wie "explizite
Spezifikationen" gibt es in C in dieser Beziehung nicht.
> ... und davon war ich ausgegangen.
Ein böser Fehler und eigentlich nicht recht verständlich. ;-)
Versuche mal eine leere Struktur zu deklarieren und sie zu
initialisieren. Der Compiler wird das garnicht akzeptieren. Auch die
Syntax-Beschreibung wird klarlegen, dass mindestens ein Mitglied genannt
werden muss.
Egal was in irgendeiner Dokumentation steht (und hier war ja
ausdrücklich von "opaque" die Rede) - an der C-Syntax kommt das
dazugehörige Programm niemals vorbei.
Die Schlussfolgerung wäre gewesen: In der Dokumentation steht etwas, das
NICHT C ist. Ergo: Die Dokumentation ist - sagen wir - unvollständig.
Aber wie schon gesagt. Das wurde hier ja auch AUSDRÜCKLICH angesagt.
Dann viel Erfolg noch.