Sind Sie sicher, dass das C ist?
Das Standarddokument, mit dem Sie verbunden sind, beschreibt keine solche Syntax, die ich sehen könnte.
Das sieht nach C ++ aus, wo es tatsächlich verwendet wird, um zu sagen, dass die Struktur eine andere Struktur erbt. Die TeXmacs-Kompilierungsseite empfiehlt Ihnen, einen C ++ - Compiler zu verwenden, was (für mich) bedeutet, dass dies der Fall ist geschrieben in C ++, nicht C.
Ich habe einen kurzen Blick in das TeXmacs Quellarchiv geworfen und viele ".cpp" Dateien gesehen.
GCC mag es nicht (natürlich im C-Modus).
Und wenn ich mir die Spezifikation anschaue, sehe ich nicht das, was auf Seite 113 (6.7.2.1) definiert ist, es heißt:
%Vor%Dies ist die Syntax für Bitfelder wie folgt:
%Vor%Also zusammenfassend: Das ist nicht C, es ist C ++ und es ist Vererbung wie Klassenvererbung.
Der %code% im Text des Standards ist nicht Bestandteil der C-Konstruktion. Es ist da, um das zu definierende Ding und seine Definition zu trennen.
Es gibt keine gültige Verwendung von %code% in einer Strukturdeklaration.
Als ich den Code von TeXmacs gelesen habe, habe ich Folgendes gesehen:
%Vor%Was heißt das?
Diese Syntax ist im C-Standard , S. 113 definiert. aber ich habe die Bedeutung nicht gefunden, aber das ist, weil ich nicht weiß, wie man Grammatikregeln liest.
Weil %code% ein anderes %code% ist, das Funktionen wie einen Konstruktor und einen virtuellen Destruktor enthält, und weil ich an anderer Stelle gelesen habe, dass Klassen in C ++ eigentlich %code% mit öffentlichen Membern sind, nehme ich an, dass dies der Fall ist die Art der Vererbung mit %code% in C (weil es der C-Standard ist ...).
Stimmt das?
Es ist C ++ - Syntax und entspricht dem:
%Vor%Dies ist die normale Syntax für die Vererbung von Klassen, hier wird %code% von %code% geerbt.
Der C-Standard, mit dem Sie verbunden sind, definiert (6.7.2.1):
%Vor%Nach C muss es also %code% sein, gefolgt von einem optionalen Identifier, gefolgt von %code% . Oder nur %code% gefolgt von einem Identifier (eine Forward-Deklaration). In beiden Fällen ist dort noch Platz für ein zusätzliches %code% .
Das %code% , das später in diesem Absatz des Standards erwähnt wird, handelt von Bit-Feld-Breiten wie diesem;
%Vor%Hier sind %code% und %code% nur 4 und 3 Bits breit, aber das ist eine andere Syntax als in der Frage.