___ answer1666599 ___

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.

    
___ answer1666630 ___

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.

    
___ answer1666632 ___

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.

    
___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ qstntxt ___

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?

    
___ answer1666617 ___

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.

Über diese Syntax in C:

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.

    
___

8

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 concrete_struct ein anderes struct 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 struct mit öffentlichen Membern sind, nehme ich an, dass dies der Fall ist die Art der Vererbung mit struct in C (weil es der C-Standard ist ...).

Stimmt das?

    
Gzorg 03.11.2009, 10:46
quelle

4 Antworten

21

Es ist C ++ - Syntax und entspricht dem:

%Vor%

Dies ist die normale Syntax für die Vererbung von Klassen, hier wird texmacs_input_rep von concrete_struct geerbt.

Über diese Syntax in C:

Der C-Standard, mit dem Sie verbunden sind, definiert (6.7.2.1):

%Vor%

Nach C muss es also struct sein, gefolgt von einem optionalen Identifier, gefolgt von { . Oder nur struct gefolgt von einem Identifier (eine Forward-Deklaration). In beiden Fällen ist dort noch Platz für ein zusätzliches : ... .

Das : , das später in diesem Absatz des Standards erwähnt wird, handelt von Bit-Feld-Breiten wie diesem;

%Vor%

Hier sind a und b nur 4 und 3 Bits breit, aber das ist eine andere Syntax als in der Frage.

    
sth 03.11.2009, 10:53
quelle
6

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.

    
246tNt 03.11.2009 10:57
quelle
3

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.

    
unwind 03.11.2009 10:50
quelle
2

Der : 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 : in einer Strukturdeklaration.

    
pmg 03.11.2009 10:57
quelle

Tags und Links