EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

c++decl – Online in der Cloud

Führen Sie c++decl im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl c++decl, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


cdecl, c++decl – Erstellen Sie C- und C++-Typdeklarationen

ZUSAMMENFASSUNG


cdecl [-a | -+ | -p | -r] [-ciqdDV]
[[ Dateien ...] | erklären ... | erklären ... | werfen ... | kompensieren ... | Hilfe | ? ]
c++decl [-a | -+ | -p | -r] [-ciqdDV]
[[ Dateien ...] | erklären ... | erklären ... | werfen ... | kompensieren ... | Hilfe | ? ]
erklären ...
erklären ...
werfen ...

BESCHREIBUNG


Cdecl (und c++decl) ist ein Programm zum Kodieren und Dekodieren von Deklarationen vom Typ C (oder C++).
Die C-Sprache basiert auf dem (vorgeschlagenen) X3J11 ANSI-Standard; optional das C
Die Sprache kann auf der von Kernighan & Ritchie definierten Vor-ANSI-Definition basieren Das C
Programmierung Sprache Buch oder die vom Ritchie PDP-11 C-Compiler definierte C-Sprache.
Die Sprache C++ basiert auf der Sprache von Bjarne Stroustrup Das C + + Programmierung Spracheplus die
Ergänzungen der Version 2.0 zur Sprache.

OPTIONAL


-a Verwenden Sie den ANSI-C-Dialekt der C-Sprache.

-p Verwendet den im Buch von Kernighan & Ritchie definierten Prä-ANSI-Dialekt.

-r Verwenden Sie den vom Ritchie PDP-11 C-Compiler definierten Dialekt.

-+ Verwenden Sie die Sprache C++ anstelle von C.

-i Im interaktiven Modus ausführen (Standard beim Lesen von einem Terminal). Das auch
Aktiviert Eingabeaufforderungen, Zeilenbearbeitung und Zeilenverlauf.

-q Beruhigt die Eingabeaufforderung. Schaltet die Eingabeaufforderung im interaktiven Modus aus.

-c Erstellt kompilierbaren C- oder C++-Code als Ausgabe. Cdecl fügt am Ende ein Semikolon hinzu
einer Deklaration und einem Paar geschweifter Klammern am Ende einer Funktionsdefinition.

-d Aktiviert Debugging-Informationen (sofern kompiliert).

-D Aktiviert die YACC-Debugging-Informationen (sofern kompiliert).

-V Versionsinformationen anzeigen und beenden.

AUFRUFEN


Cdecl kann unter verschiedenen Namen aufgerufen werden (entweder durch Umbenennen der ausführbaren Datei,
oder einen Symlink oder Hardlink dazu erstellen). Wenn es aufgerufen wird als cdecl dann ist ANSI C das
Standardsprache. Wenn es aufgerufen wird als c++decl dann ist C++ die Standardeinstellung. Wenn es aufgerufen wird
entweder erklären, werfen, oder erklären dann wird der Rest der Befehlszeile interpretiert
Geben Sie Optionen als Parameter für diesen Befehl ein, führen Sie den Befehl aus und beenden Sie ihn. Es wird auch reichen
Dies ist der Fall, wenn das erste Nicht-Switch-Argument in der Befehlszeile einer dieser drei Befehle ist.
Die Eingabe kann auch aus einer Datei erfolgen.

Cdecl liest die genannten Dateien für Anweisungen in der unten beschriebenen Sprache. A
Die Transformation erfolgt von dieser Sprache in C (C++) oder Pseudo-Englisch. Die ergebnisse von
Diese Transformation wird auf der Standardausgabe geschrieben. Wenn keine Dateien benannt sind, oder ein Dateiname
Wenn ein „-“ auftritt, wird die Standardeingabe gelesen. Wenn die Standardeingabe von a kommt
Terminal (oder das -i Option verwendet wird), wird vor jedem Vorgang eine Eingabeaufforderung an das Terminal geschrieben
Linie. Die Eingabeaufforderung kann durch deaktiviert werden -q Option (oder die kompensieren Keine Aufforderung Befehl). Wenn
cdecl wird aufgerufen als erklären, erklären or werfen, oder das erste Argument ist einer der Befehle
Nachfolgend wird die Argumentliste gemäß der gezeigten Grammatik interpretiert
unten statt als Dateinamen.

Wenn es interaktiv ausgeführt wird, cdecl verwendet die GNU-Readline-Bibliothek, um Schlüsselwörter bereitzustellen
Abschluss und Befehlszeilenverlauf, sehr ähnlich bash(1) (siehe auch). Durch Drücken der TAB-TASTE wird
Vervollständigen Sie das Teilschlüsselwort vor dem Cursor, es sei denn, es sind mehrere möglich
Abschluss, in diesem Fall zeigt ein zweites TAB die Liste der möglichen Abschlüsse an und
Zeigt die Befehlszeile erneut an. Dazu können die linke und rechte Pfeiltaste sowie die Rücktaste verwendet werden
Bearbeiten auf natürliche Weise, und die Auf- und Abwärtspfeiltasten rufen vorherige Befehlszeilen ab
aus der Geschichte. Die meisten anderen bekannten Tasten, wie z. B. Strg-U, um den gesamten Text aus dem zu löschen
Cursor zurück zum Zeilenanfang, funktioniert wie erwartet. Es besteht eine Unklarheit zwischen
int und in Schlüsselwörter, aber cdecl wird erraten, welches Sie gemeint haben, und es errät immer
korrekt.

Sie können verwenden cdecl wie Sie ein C-Programm mit einem Editor wie erstellen vi(1) oder Emacs(1). Du
Geben Sie einfach die pseudoenglische Version der Erklärung ein und bewerben Sie sich cdecl als Filter
zur Linie. (In vi(1), geben Sie „“ ein!!cdecl''.)

Besitzt das erstellen Programm zu erhalten -c verwendet wird, enthält die Ausgabe danach Semikolons
Variablendeklarationen und geschweifte Klammerpaare nach Funktionsdeklarationen.

Das -V Mit dieser Option werden die Versionsnummern der Dateien ausgedruckt, die zum Erstellen des Prozesses verwendet wurden.
Wenn die Quelle mit aktivierten Debugging-Informationen kompiliert wird, wird die -d Option wird aktiviert
es soll ausgegeben werden. Wenn die Quelle mit aktivierten YACC-Debugging-Informationen kompiliert wird, wird die
-D Option ermöglicht die Ausgabe.

COMMAND SPRACHE


Es gibt sechs Aussagen in der Sprache. Der erklären Die Anweisung erstellt einen C-Typ
Deklaration aus einer ausführlichen Beschreibung. Der werfen Die Anweisung erstellt eine C-Typ-Umwandlung als
könnte in einem Ausdruck vorkommen. Der erklären Anweisung dekodiert eine C-Typ-Deklaration oder
Besetzung, die eine ausführliche Beschreibung liefert. Der Hilfe (oder ?)-Anweisung bietet eine Hilfe
Botschaft. Die verlassen (oder wunsch)-Anweisung (oder das Ende der Datei) beendet das Programm. Der kompensieren
Mit der Anweisung können die Befehlszeilenoptionen interaktiv festgelegt werden. Jede Aussage ist
durch ein Semikolon oder einen Zeilenumbruch getrennt.

SYNONYME


Einige Synonyme sind während einer Deklaration zulässig:

Charakter ist ein Synonym für Zeichen
konstant ist ein Synonym für const
Aufzählung ist ein Synonym für Aufzählung
func ist ein Synonym für Funktion
Integer ist ein Synonym für int
ptr ist ein Synonym für Zeiger
ref ist ein Synonym für Referenz
ret ist ein Synonym für Rückkehr
Struktur ist ein Synonym für Struktur
Vektor ist ein Synonym für Array

Die TAB-Vervollständigungsfunktion kennt nur die Schlüsselwörter in der rechten Spalte des
Struktur, nicht die in der linken Spalte. Die TAB-Vervollständigung ist viel weniger nützlich, wenn die
Die führenden Zeichen verschiedener Schlüsselwörter sind gleich (die Schlüsselwörter stimmen mit einem überein).
eine andere), und das Einfügen beider Spalten würde zu einigen Konflikten führen.

GRAMMATIK


Die folgende Grammatik beschreibt die Sprache. In der Grammatik sind Wörter in „<>“ nicht
Terminals, einfache Kleinbuchstaben sind Terminals, die für sich selbst stehen. Nur Großbuchstaben
Wörter sind andere lexikalische Token: NICHTS bedeutet die leere Zeichenfolge; NAME bedeutet eine C-Kennung;
NUMBER bedeutet eine Folge von Dezimalziffern; und NL bedeutet die neue Zeile oder das Semikolon
Zeichen.

::= NICHTS
| NL
::= NICHTS
| deklariere NAME als
| erklären
| Wirf NAME hinein
| gießen
| erklären
| erklären
| erklären ( ) optionaler-NAME
| Satz
| Hilfe | ?
| aufhören
| Ausfahrt
::= Array von
| Array ANZAHL von
| Funktion kehrt zurück
| Funktion ( ) zurückkehren
| Zeiger auf
| Zeiger auf Mitglied der Klasse NAME
| Bezug auf
|
::=
| *
| NAME :: *
| &
::= ( )
| ( )
| [ ]
| [ NUMMER ]
| ( )
| NAME
::= NICHTS
| ( )
| ( ) ( )
| ( ) ( )
| ( )
| NAME :: *
| *
| &
| [ ]
| [ NUMMER ]
::= |
|
| Strukturname | Gewerkschaftsname | Enumerationsname | Klassenname
::= ,
|
|
::= ,
| NICHTS
|
|
| als
::= int | char | doppelt | schweben | Leere
::= |
::= kurz | lang | unsigniert | signiert |
::= | NICHTS
::= const | flüchtig | Noalias
::= auto | extern | registrieren | statisch
::= NICHTS |
::= NICHTS |
| erstellen | nocreate
| Eingabeaufforderung | Keine Aufforderung
| Ritchie | preansi | ansi | cplusplus
| debuggen | Nodebug | yydebug | noyydebug

SET OPTIONAL


Das kompensieren Der Befehl benötigt mehrere Optionen. Du kannst Tippen kompensieren or kompensieren Optionen die sehen
aktuell ausgewählte Optionen und eine Zusammenfassung der verfügbaren Optionen. Der erste
vier entsprechen dem -a, -p, -r und -+ Befehlszeilenoptionen bzw.

ansi Verwenden Sie den ANSI-C-Dialekt der C-Sprache.

preansi
Verwenden Sie den im Buch von Kernighan & Ritchie definierten Prä-ANSI-Dialekt.

Ritchie
Verwenden Sie den vom Ritchie PDP-11 C-Compiler definierten Dialekt.

cplusplus
Verwenden Sie die Sprache C++ anstelle von C.

[keine] Aufforderung
Aktivieren oder deaktivieren Sie die Eingabeaufforderung im interaktiven Modus.

[nein]erstellen
Aktivieren oder deaktivieren Sie das Anhängen von Semikolons oder geschweiften Klammern an die Deklarationen
Ausgabe von cdecl. Dies entspricht dem -c Befehlszeilenoption.

[kein Debug
Aktivieren oder deaktivieren Sie Debugging-Informationen.

[no]yydebug
Aktivieren oder deaktivieren Sie die YACC-Debugging-Informationen.

Hinweis: Debugging-Informationen und YACC-Debugging-Informationen sind nur verfügbar, wenn sie vorhanden sind
zusammengestellt worden cdecl. Die letzten beiden Optionen entsprechen dem -d und -D Befehlszeile
Optionen bzw. Debugging-Informationen werden normalerweise in der Programmentwicklung verwendet
wird im Allgemeinen nicht in verteilte ausführbare Dateien kompiliert.

Beispiele:


Um ein Array von Zeigern auf ähnliche Funktionen zu deklarieren malloc(3), tun

Deklarieren Sie fptab als Array von Zeigern auf die Funktion, die einen Zeiger auf char zurückgibt

Das Ergebnis dieses Befehls ist

char *(*fptab[])()

Wenn Sie diese Deklaration im Code einer anderen Person sehen, können Sie daraus einen Sinn erkennen
Dabei

erklären char *(*fptab[])()

Die richtige Erklärung für Signal(2), das Ignorieren von Funktionsprototypen, lässt sich leicht in beschreiben
cdeclSprache:

Deklarieren Sie das Signal als Funktion, die einen Zeiger auf eine Funktion zurückgibt, die void zurückgibt

was produziert

void (*signal())()

Die resultierende Funktionsdeklaration enthält zwei Sätze leerer Klammern. Der Autor von
Eine solche Funktion könnte sich fragen, wo die Parameter abgelegt werden sollen:

Deklarieren Sie das Signal als Funktion (arg1, arg2) und geben Sie einen Zeiger auf die Funktion zurück, die „void“ zurückgibt

bietet die folgende Lösung (bei Ausführung mit -c Möglichkeit):

void (*signal(arg1,arg2))() { }

Wenn wir den Funktionsprototypen hinzufügen möchten, ist der Funktionsprototyp für eine Funktion wie z
as _Ausfahrt(2) würde deklariert werden mit:

Deklarieren Sie _exit als Funktion (retvalue als int), die void zurückgibt

Angabe

void _exit(int retvalue) { }

Als komplexeres Beispiel mit Funktionsprototypen: Signal(2) könnte vollständig definiert werden als:

Signal als Funktion deklarieren (x als int, y als Zeiger auf Funktion (int), die void zurückgibt)
Gibt einen Zeiger auf die Funktion (int) zurück und gibt void zurück

geben (mit -c)

void (*signal(int x, void (*y)(int )))(int ) { }

Cdecl kann dabei helfen, herauszufinden, wo die Modifikatoren „const“ und „volatile“ eingefügt werden müssen
Erklärungen, also

deklariere foo als Zeiger auf const int

gibt

const int *foo

während

deklariere foo als const-Zeiger auf int

gibt

int * const foo

C++-Deklaration kann somit bei der Deklaration von Referenzen hilfreich sein

Deklarieren Sie x als Referenz auf den Zeiger auf das Zeichen

gibt

char *&x

C++-Deklaration kann bei Zeigern auf Mitglieder von Klassen hilfreich sein und so einen Zeiger auf eine deklarieren
ganzzahliges Mitglied einer Klasse X mit

deklariere foo als Zeiger auf Mitglied der Klasse X int

gibt

int X::*foo

und

Deklarieren Sie foo als Zeiger auf das Mitglied der Klasse-X-Funktion (arg1, arg2), die den Zeiger zurückgibt
zur Klasse Y

gibt

Klasse Y *(X::*foo)(arg1, arg2)

DIAGNOSE


Die Anweisungen „declare“, „cast“ und „explain“ versuchen, auf Konstruktionen hinzuweisen, die dies nicht sind
unterstützt in C. In manchen Fällen wird eine Vermutung darüber angestellt, was wirklich beabsichtigt war. In diesen
In einigen Fällen ist das C-Ergebnis eine Toy-Deklaration, deren Semantik nur in Algol-68 funktioniert. Der
Die Liste der nicht unterstützten C-Konstrukte hängt davon ab, um welche Version der C-Sprache es sich handelt
verwendet (siehe ANSI-, Pre-ANSI- und Ritchie-Optionen). Der Satz unterstützter C++-Konstrukte
ist eine Obermenge der ANSI-Menge, mit Ausnahme von Noalias Stichwort.

REFERENZEN


ANSI-Standard X3.159-1989 (ANSI C)

ISO/IEC 9899:1990 (der ISO-Standard)

Die comp.lang.c-FAQ
http://www.eskimo.com/~scs/C-faq.top.html

Abschnitt 8.4 des C-Referenzhandbuchs innerhalb Das C Programmierung Sprache von B. Kernighan &
D. Ritchie.

Abschnitt 8 des C++-Referenzhandbuchs Das C + + Programmierung Sprache von B.
Stroustrup.

VORSICHTEN


Die pseudoenglische Syntax ist übermäßig ausführlich.

Es gibt eine Fülle semantischer Überprüfungen, die nicht durchgeführt werden.

Cdecl wurde geschrieben, bevor der ANSI-C-Standard fertiggestellt war, und es wurde kein Versuch unternommen
um es auf den neuesten Stand zu bringen. Dennoch kommt es dem Standard sehr nahe, mit dem Offensichtlichen
Ausnahme von Noalias.

CdeclDer Umfang ist bewusst klein gehalten. Es hilft Ihnen nicht, Initialisierungen herauszufinden. Es
erwartet, dass sich Speicherklassen am Anfang einer Deklaration befinden, gefolgt von der
const-, volatile- und noalias-Modifikatoren, gefolgt vom Typ der Variablen. Cdecl
weiß nichts über Argumentlisten variabler Länge. (Dazu gehört auch das ``, ...''
Syntax.)

Cdecl glaubt, dass alle Erklärungen, die Sie äußern, als externe Definitionen verwendet werden.
Einige Deklarationskontexte in C ermöglichen mehr Flexibilität. Ein Beispiel hierfür ist:

Deklarieren Sie argv als Array oder Array von char

woher cdecl antwortet mit

Warnung: In C nicht unterstützt – „Inneres Array mit nicht angegebener Größe“
(Vielleicht meinst du „Array von Zeigern“)
char argv[][]

Vorläufige Unterstützung für die Noalias Das Schlüsselwort wurde eingegeben, weil es im ANSI-Entwurf enthalten war
Spezifikationen.

AUTOREN


Ursprünglich geschrieben von Graham Ross, verbessert und erweitert von David Wolverton, Tony Hansen,
und Merlyn LeRoy.

GNU-Readline-Unterstützung und Linux-Portierung von David R. Conrad,[E-Mail geschützt] >

Verwenden Sie c++decl online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad