Il s'agit de la commande cdecl qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
cdecl, c++decl - Compose des déclarations de type C et C++
SYNOPSIS
cdecl [-un | -+ | -p | -r] [-ciqdDV]
[[ fichiers ...] | expliquer ... | déclarer ... | . ... | set ... | vous aider | ? ]
décl c++ [-un | -+ | -p | -r] [-ciqdDV]
[[ fichiers ...] | expliquer ... | déclarer ... | . ... | set ... | vous aider | ? ]
expliquer
déclarer
.
DESCRIPTION
Cdecl (Et décl c++) est un programme d'encodage et de décodage des déclarations de type C (ou C++).
Le langage C est basé sur la norme ANSI X3J11 (projet proposé) ; éventuellement, le C
le langage peut être basé sur la définition pré-ANSI définie par Kernighan & Ritchie's La C
Programmation Langue livre, ou le langage C défini par le compilateur Ritchie PDP-11 C.
Le langage C++ est basé sur le langage de Bjarne Stroustrup La C + + Programmation Langue, plus le
ajouts de la version 2.0 à la langue.
OPTIONS
-a Utiliser le dialecte ANSI C du langage C.
-p Utilise le dialecte pré-ANSI défini par le livre de Kernighan & Ritchie.
-r Utilise le dialecte défini par le compilateur Ritchie PDP-11 C.
-+ Utilisez le langage C++ plutôt que C.
-i Exécuter en mode interactif (par défaut lors de la lecture depuis un terminal). Ça aussi
active l'invite, l'édition de ligne et l'historique de ligne.
-q Calme l'invite. Désactive l'invite en mode interactif.
-c Crée du code C ou C++ compilable en sortie. Cdecl ajoutera un point-virgule à la fin
d'une déclaration et une paire d'accolades à la fin d'une définition de fonction.
-d Activer les informations de débogage (si compilées).
-D Activer les informations de débogage YACC (si compilées).
-V Affiche les informations de version et quitte.
INVOQUER
Cdecl peut être invoqué sous plusieurs noms différents (soit en renommant l'exécutable,
ou en créant un lien symbolique ou un lien physique vers celui-ci). S'il est invoqué comme cdecl alors ANSI C est le
langage par défaut. S'il est invoqué comme décl c++ alors C++ est la valeur par défaut. S'il est invoqué
soit expliquer, ., ou déclarer alors il interprétera le reste de la ligne de commande
options en tant que paramètres de cette commande, exécutez la commande et quittez. ça fera aussi
ceci si le premier argument non-switch sur la ligne de commande est l'une de ces trois commandes.
L'entrée peut également provenir d'un fichier.
Cdecl lit les fichiers nommés pour les instructions dans la langue décrite ci-dessous. UNE
la transformation est faite de ce langage en C (C++) ou en pseudo-anglais. Les résultats de
cette transformation sont écrites sur la sortie standard. Si aucun fichier n'est nommé, ou un nom de fichier
de ``-'' est rencontré, l'entrée standard sera lue. Si l'entrée standard provient d'un
terminal, (ou le -i est utilisée), une invite sera écrite sur le terminal avant chaque
ligne. L'invite peut être désactivée par le -q option (ou le set pas d'invite commander). Si
cdecl est invoqué comme expliquer, déclarer or ., ou le premier argument est l'une des commandes
discuté ci-dessous, la liste d'arguments sera interprétée selon la grammaire montrée
ci-dessous au lieu de noms de fichiers.
Lorsqu'il est exécuté de manière interactive, cdecl utilise la bibliothèque readline GNU pour fournir le mot-clé
l'achèvement et l'historique de la ligne de commande, un peu comme bash(1) (qv). Appuyez sur TAB pour
compléter le mot-clé partiel avant le curseur, sauf s'il y a plus d'un possible
complétion, auquel cas un deuxième TAB affichera la liste des complétions possibles et
réafficher la ligne de commande. Les touches fléchées gauche et droite et le retour arrière peuvent être utilisés pour
édition de manière naturelle, et les touches fléchées haut et bas récupèrent les lignes de commande précédentes
de l'histoire. La plupart des autres touches familières, telles que Ctrl-U pour supprimer tout le texte du
curseur au début de la ligne, travaillez comme prévu. Il y a une ambiguïté entre
le int et développement mots-clés, mais cdecl devinera lequel vous vouliez dire, et il devine toujours
correctement.
Vous pouvez utiliser cdecl lorsque vous créez un programme C avec un éditeur comme vi(1) ou emacs(1). Tu
tapez simplement la version pseudo-anglaise de la déclaration et appliquez cdecl comme filtre
à la ligne. (Dans vi(1), tapez ``!!cdecl''.)
Si la engendrent Programme option -c est utilisé, la sortie inclura des points-virgules après
déclarations de variables et paires d'accolades après les déclarations de fonctions.
La -V L'option imprimera les numéros de version des fichiers utilisés pour créer le processus.
Si la source est compilée avec les informations de débogage activées, le -d l'option activera
il doit être sorti. Si la source est compilée avec les informations de débogage YACC activées, le
-D l'option permettra sa sortie.
COMMAND LANGUAGE
Il y a six déclarations dans la langue. Les déclarer l'instruction compose un type C
déclaration à partir d'une description verbeuse. Les . L'instruction compose un transtypage de type C en tant que
peut apparaître dans une expression. Les expliquer l'instruction décode une déclaration de type C ou
cast, produisant une description verbeuse. Les vous aider (ou ?) l'instruction fournit une aide
un message. Le quitter (ou sortie) (ou la fin du fichier) quitte le programme. Les set
L'instruction permet de définir les options de la ligne de commande de manière interactive. Chaque déclaration est
séparés par un point-virgule ou une nouvelle ligne.
SYNONYMES
Certains synonymes sont autorisés lors d'une déclaration :
caractère est un synonyme de char
constante est un synonyme de const
énumération est un synonyme de enum
func est synonyme de fonction
entier est un synonyme de int
ptr est un synonyme de pointeur
ref est un synonyme de référence
ret est synonyme de retour
structure est un synonyme de struct
vecteur est synonyme de tableau
La fonction de complétion TAB ne connaît que les mots-clés dans la colonne de droite du
structure, pas ceux de la colonne de gauche. La complétion TAB est beaucoup moins utile lorsque le
les premiers caractères de différents mots-clés sont les mêmes (les mots-clés sont en conflit avec un
un autre), et mettre les deux colonnes provoquerait pas mal de conflits.
GRAMMAIRE
La grammaire suivante décrit la langue. Dans la grammaire, les mots dans "<>" ne sont pas
terminaux, les mots en minuscules nus sont des terminaux qui se suffisent à eux-mêmes. Majuscules nues
les mots sont d'autres tokens lexicaux : RIEN signifie la chaîne vide ; NOM signifie un identifiant C ;
NOMBRE signifie une chaîne de chiffres décimaux ; et NL signifie la nouvelle ligne ou le point-virgule
caractères.
::= RIEN
| Pays-Bas
::= RIEN
| déclarer NOM comme
| déclarer
| jeter NOM dans
| jeter
| Explique
| Explique
| Explique ( ) facultatif-NOM
| ensemble
| aide | ?
| quitter
| sortir
::= tableau de
| tableau NOMBRE de
| fonction retournant
| fonction ( ) de retour
| pointeur vers
| pointeur vers le membre de la classe NAME
| référence à
|
::=
| *
| NOM :: *
| &
::= ( )
| ( )
| [ ]
| [ NUMÉRO ]
| ( )
| NOM
::= RIEN
| ( )
| ( ) ( )
| ( ) ( )
| ( )
| NOM :: *
| *
| &
| [ ]
| [ NUMÉRO ]
::= |
|
| struct NOM | syndicat NOM | enum NOM | nom du cours
::= ,
|
|
::= ,
| RIEN
|
|
| comme
::= entier | char | double | flotteur | annuler
::= |
::= court | longue | non signé | signé |
::= | RIEN
::= const | volatile | noalias
::= automatique | externe | s'inscrire | statique
::= RIEN |
::= RIEN |
| créer | ne pas créer
| invite | pas d'invite
| ritchie | préansi | ansi | cplusplus
| déboguer | bogue de nœud | yydebug | noyydebug
SET OPTIONS
La set commande prend plusieurs options. Vous pouvez taper set or set Options pour voir la
les options actuellement sélectionnées et un résumé des options disponibles. La première
quatre correspondent au -a, -p, -r et -+ options de ligne de commande, respectivement.
ansi Utilise le dialecte ANSI C du langage C.
préansi
Utilisez le dialecte pré-ANSI défini par le livre de Kernighan & Ritchie.
ritchie
Utilisez le dialecte défini par le compilateur Ritchie PDP-11 C.
cplusplus
Utilisez le langage C++ plutôt que C.
[pas] d'invite
Activez ou désactivez l'invite en mode interactif.
[non] créer
Activer ou désactiver l'ajout de points-virgules ou d'accolades aux déclarations
sortie par cdecl. Cela correspond au -c commande option de ligne.
[pas] de débogage
Activez ou désactivez les informations de débogage.
[non] yydebug
Activez ou désactivez les informations de débogage YACC.
Remarque : les informations de débogage et les informations de débogage YACC ne sont disponibles que si elles ont
été compilé dans cdecl. Les deux dernières options correspondent au -d et -D ligne de commande
options, respectivement. Les informations de débogage sont normalement utilisées dans le développement de programmes, et
n'est généralement pas compilé dans des exécutables distribués.
EXEMPLES
Pour déclarer un tableau de pointeurs vers des fonctions qui sont comme malloc(3), faire
déclarer fptab en tant que tableau de pointeur vers une fonction renvoyant un pointeur vers char
Le résultat de cette commande est
caractère *(*fptab[])()
Lorsque vous voyez cette déclaration dans le code de quelqu'un d'autre, vous pouvez lui donner un sens en
faire
expliquer le caractère *(*fptab[])()
La déclaration appropriée pour signal(2), ignorant les prototypes de fonction, est facilement décrit dans
cdeclla langue de :
déclarer le signal comme fonction renvoyant un pointeur vers la fonction renvoyant void
qui produit
vide (*signal())()
La déclaration de fonction qui en résulte a deux ensembles de parenthèses vides. L'auteur de
une telle fonction peut se demander où mettre les paramètres :
déclarer le signal en tant que fonction (arg1,arg2) renvoyant un pointeur vers la fonction renvoyant void
fournit la solution suivante (lorsqu'il est exécuté avec le -c option):
vide (*signal(arg1,arg2))() { }
Si nous voulons ajouter dans les prototypes de fonction, le prototype de fonction pour une fonction telle
as _sortir(2) serait déclaré avec :
déclarer _exit comme fonction (retvalue comme int) retournant void
donnant
void _exit (valeur int) { }
Comme exemple plus complexe utilisant des prototypes de fonction, signal(2) pourrait être entièrement défini comme :
déclarer le signal en tant que fonction (x comme int, y comme pointeur vers la fonction (int) retournant void)
retournant le pointeur vers la fonction (int) retournant void
donner (avec -c)
void (*signal(int x, void (*y)(int )))(int ) { }
Cdecl peut aider à comprendre où mettre les modificateurs "const" et "volatile" dans
déclarations, ainsi
déclarer foo comme pointeur vers const int
donne
const entier *foo
tout en
déclarer foo comme pointeur const vers int
donne
int * const foo
Décl C++ peut aider à déclarer des références, ainsi
déclarer x comme référence au pointeur vers le caractère
donne
caractère *&x
Décl C++ peut aider avec les pointeurs vers les membres des classes, déclarant ainsi un pointeur vers un
membre entier d'une classe X avec
déclarer foo comme pointeur vers le membre de la classe X int
donne
entier X ::*foo
et
déclarer foo comme pointeur vers le membre de la fonction de classe X (arg1, arg2) renvoyant un pointeur
à la classe Y
donne
classe Y *(X::*foo)(arg1, arg2)
DIAGNOSTIC
Les instructions declare, cast et Explain essaient de signaler des constructions qui ne sont pas
pris en charge dans C. Dans certains cas, une supposition est faite quant à ce qui était vraiment prévu. Dans ces
cas, le résultat C est une déclaration jouet dont la sémantique ne fonctionnera qu'en Algol-68. Les
la liste des constructions C non prises en charge dépend de la version du langage C utilisée
utilisé (voir les options ANSI, pré-ANSI et Ritchie). L'ensemble des constructions C++ prises en charge
est un sur-ensemble de l'ensemble ANSI, à l'exception du noalias mot-clé.
Références
Norme ANSI X3.159-1989 (ANSI C)
ISO/IEC 9899:1990 (la norme ISO)
La FAQ comp.lang.c
http://www.eskimo.com/~scs/C-faq.top.html
Section 8.4 du Manuel de référence C dans La C Programmation Langue par B. Kernighan &
D.Ritchie.
Section 8 du manuel de référence C++ dans La C + + Programmation Langue par B.
Stroustrup.
MISES EN GARDE
La syntaxe pseudo-anglaise est excessivement verbeuse.
Il existe une multitude de vérifications sémantiques qui ne sont pas effectuées.
Cdecl a été écrit avant l'achèvement de la norme ANSI C, et aucune tentative n'a été faite
pour le mettre à jour. Néanmoins, il est très proche du standard, avec l'évidence
sauf noalias.
CdeclLa portée de est intentionnellement petite. Cela ne vous aide pas à comprendre les initialisations. Ce
s'attend à ce que les classes de stockage soient au début d'une déclaration, suivies du
les modificateurs const, volatile et noalias, suivis du type de la variable. Cdecl
ne connaît rien aux listes d'arguments de longueur variable. (Cela inclut le ``...''
syntaxe.)
Cdecl pense que toutes les déclarations que vous prononcez seront utilisées comme définitions externes.
Certains contextes de déclaration en C permettent plus de flexibilité que cela. Voici un exemple :
déclarer argv comme tableau de tableau de caractères
où cdecl répond avec
Avertissement : non pris en charge en C - « tableau interne de taille non spécifiée »
(peut-être voulez-vous dire "tableau de pointeur")
char argv[][]
Un soutien provisoire pour le noalias le mot clé a été inséré car il figurait dans le projet ANSI
cahier des charges.
AUTEURS
Écrit à l'origine par Graham Ross, amélioré et développé par David Wolverton, Tony Hansen,
et Merlyn LeRoy.
Prise en charge de GNU readline et portage Linux par David R. Conrad,[email protected]>
Utiliser cdecl en ligne en utilisant les services onworks.net