InglésFrancésEspañol

Ad


icono de página de OnWorks

c ++ decl: en línea en la nube

Ejecute c ++ decl en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando c ++ decl que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


cdecl, c ++ decl: redacta declaraciones de tipo C y C ++

SINOPSIS


cdecl [-a | - + | -p | -r] [-ciqdDV]
[[ archivos ...] | explicar ... declarar ... emitir ... set ... ayuda | ? ]
c ++ decl [-a | - + | -p | -r] [-ciqdDV]
[[ archivos ...] | explicar ... declarar ... emitir ... set ... ayuda | ? ]
explicar ...
declarar ...
emitir ...

DESCRIPCIÓN


cdecl (y c ++ decl) es un programa para codificar y decodificar declaraciones de tipo C (o C ++).
El lenguaje C se basa en el (borrador propuesto) del estándar X3J11 ANSI; opcionalmente, el C
El lenguaje puede basarse en la definición pre-ANSI definida por Kernighan & Ritchie. El C
Programación Idioma libro, o el lenguaje C definido por el compilador Ritchie PDP-11 C.
El lenguaje C ++ se basa en Bjarne Stroustrup's El C + + Programación Idioma, más el
adiciones de la versión 2.0 al idioma.

CAMPUS


-a Usa el dialecto ANSI C del lenguaje C.

-p Usa el dialecto pre-ANSI definido por el libro de Kernighan & Ritchie.

-r Usa el dialecto definido por el compilador Ritchie PDP-11 C.

- + Use el lenguaje C ++, en lugar de C.

-i Ejecutar en modo interactivo (el predeterminado cuando se lee desde un terminal). Esto también
activa las indicaciones, la edición de líneas y el historial de líneas.

-q Silenciar el mensaje. Desactiva la indicación en modo interactivo.

-c Crea código compilable C o C ++ como salida. cdecl agregará un punto y coma al final
de una declaración y un par de llaves al final de una definición de función.

-d Activa la información de depuración (si está compilada).

-D Activa la información de depuración de YACC (si está compilada).

-V Muestra información sobre la versión y sale.

INVOCAR


cdecl puede invocarse con varios nombres diferentes (ya sea cambiando el nombre del ejecutable,
o creando un enlace simbólico o un enlace duro a él). Si se invoca como cdecl entonces ANSI C es el
idioma predeterminado. Si se invoca como c ++ decl entonces C ++ es el predeterminado. Si se invoca
Cómo sea explicar, emitiro declarar luego interpretará el resto de la línea de comando
opciones como parámetros para ese comando, ejecute el comando y salga. También servirá
esto si el primer argumento no conmutador en la línea de comando es uno de esos tres comandos.
La entrada también puede provenir de un archivo.

cdecl lee los archivos nombrados para las declaraciones en el idioma que se describe a continuación. A
la transformación se realiza de ese lenguaje a C (C ++) o pseudo-inglés. Los resultados de
esta transformación se escribe en la salida estándar. Si no se nombra ningún archivo, o un nombre de archivo
de `` - '', se leerá la entrada estándar. Si la entrada estándar proviene de un
terminal, (o el -i se utiliza la opción), se escribirá un mensaje en el terminal antes de cada
línea. El mensaje puede desactivarse mediante el -q opción (o la set sin aviso mando). Si
cdecl se invoca como explicar, declarar or emitir, o el primer argumento es uno de los comandos
discutido a continuación, la lista de argumentos se interpretará de acuerdo con la gramática que se muestra
a continuación en lugar de como nombres de archivo.

Cuando se ejecuta de forma interactiva, cdecl utiliza la biblioteca readline de GNU para proporcionar la palabra clave
historial de finalización y línea de comandos, muy parecido a golpear(1) (qv). Al presionar TAB se
complete la palabra clave parcial antes del cursor, a menos que haya más de una posible
finalización, en cuyo caso una segunda TAB mostrará la lista de posibles finalizaciones y
vuelva a mostrar la línea de comando. Las teclas de flecha izquierda y derecha y el retroceso se pueden utilizar para
editar de forma natural, y las teclas de flecha arriba y abajo recuperan líneas de comando anteriores
de la historia. La mayoría de las otras teclas familiares, como Ctrl-U para eliminar todo el texto de la
cursor de nuevo al principio de la línea, funciona como se esperaba. Existe una ambigüedad entre
las int y dentro palabras clave, pero cdecl adivinará a cuál te refieres, y siempre adivina
correctamente.

Puedes usar cdecl al crear un programa en C con un editor como vi(1) o emacs(1). usted
simplemente escriba la versión pseudo-inglesa de la declaración y aplique cdecl como filtro
a la línea. (En vi(1), escriba ''!! cdecl''.)

Si Para crear programa opción -c se utiliza, la salida incluirá punto y coma después de
declaraciones de variables y pares de llaves después de las declaraciones de función.

El -V La opción imprimirá los números de versión de los archivos utilizados para crear el proceso.
Si la fuente se compila con la información de depuración activada, -d la opción habilitará
que sea salida. Si la fuente se compila con la información de depuración de YACC activada,
-D La opción habilitará su salida.

COMANDO IDIOMA


Hay seis declaraciones en el idioma. los declarar declaración compone un tipo C
declaración de una descripción detallada. los emitir declaración compone una conversión de tipo C como
podría aparecer en una expresión. los explicar declaración decodifica una declaración de tipo C o
elenco, produciendo una descripción detallada. los ayuda (o ?) declaración proporciona una ayuda
mensaje. los renuncia (o salida) (o al final del archivo) sale del programa. los set
Esta declaración permite que las opciones de la línea de comandos se establezcan de forma interactiva. Cada declaración es
separados por un punto y coma o una nueva línea.

SINÓNIMOS


Se permiten algunos sinónimos durante una declaración:

carácter es sinónimo de char
constante es sinónimo de const
enumeración es sinónimo de enum
func es sinónimo de función
integer es sinónimo de int
ptr es sinónimo de puntero
ref es sinónimo de referencia
ret es sinónimo de volver
estructura es sinónimo de estructura
vector es sinónimo de array

La función de finalización de TAB solo conoce las palabras clave en la columna derecha de la
estructura, no los de la columna de la izquierda. Completar TAB es mucho menos útil cuando el
los caracteres principales de diferentes palabras clave son los mismos (las palabras clave entran en conflicto con una
otro), y colocar ambas columnas causaría bastantes conflictos.

GRAMÁTICA


La siguiente gramática describe el idioma. En la gramática, las palabras en "<>" no son
terminales, las palabras desnudas en minúsculas son terminales que se representan a sí mismos. Mayúsculas desnudas
las palabras son otros símbolos léxicos: NADA significa la cadena vacía; NOMBRE significa un identificador C;
NÚMERO significa una cadena de dígitos decimales; y NL significa nueva línea o punto y coma
personajes.

:: = NADA
| NL
:: = NADA
| declarar NAME como
| declarar
| lanzar NAME en
| emitir
| explicar
| explicar
| explicar ( ) NOMBRE-opcional
| colocar
| ayuda | ?
| dejar
| Salida
:: = matriz de
| matriz NÚMERO de
| función de retorno
| función ( ) regresando
| puntero a
| puntero al miembro de la clase NAME
| referencia a
|
:: =
| *
| NOMBRE :: *
| Y
:: = ()
| ( )
| []
| [ NÚMERO ]
| ( )
| NOMBRE
:: = NADA
| ()
| ( ) ()
| ( ) ( )
| ( )
| NOMBRE :: *
| *
| Y
| []
| [ NÚMERO ]
:: = |
|
| struct NAME | NOMBRE del sindicato | enum NAME | nombre de la clase
:: = ,
|
|
:: = ,
| NADA
|
|
| como
:: = int | char | doble | flotar | vacío
:: = |
:: = corto | largo | sin firmar | firmado |
:: = | NADA
:: = const | volátil | noalias
:: = auto | extern | registrarse | estático
:: = NADA |
:: = NADA |
| crear | no crear
| aviso | sin aviso
| ritchie | preansi | ansi | cplusplus
| depurar | nodebug | yydebug | noyydebug

SET CAMPUS


El set El comando toma varias opciones. Puedes escribir set or set opciones para ver la
opciones seleccionadas actualmente y un resumen de las opciones que están disponibles. El primero
cuatro corresponden a la -a, -p, -ry -+ opciones de línea de comando, respectivamente.

ansi Usa el dialecto ANSI C del lenguaje C.

preansi
Utilice el dialecto pre-ANSI definido por el libro de Kernighan & Ritchie.

Ritchie
Utilice el dialecto definido por el compilador Ritchie PDP-11 C.

cplusplus
Utilice el lenguaje C ++, en lugar de C.

[no] mensaje
Active o desactive el indicador en modo interactivo.

[no] crear
Activar o desactivar la adición de punto y coma o llaves a las declaraciones
salida por cdecl. Esto corresponde a la -c opción de línea de comando.

[no depurado
Activa o desactiva la información de depuración.

[no] yydebug
Activa o desactiva la información de depuración de YACC.

Nota: la información de depuración y la información de depuración de YACC solo están disponibles si tienen
sido compilado en cdecl. Las dos últimas opciones corresponden al -d y -D de línea de comandos
opciones, respectivamente. La información de depuración se utiliza normalmente en el desarrollo de programas y
generalmente no se compila en ejecutables distribuidos.

EJEMPLOS


Para declarar una matriz de punteros a funciones que son como malloc(3), haz

declare fptab como una matriz de puntero a la función que devuelve el puntero a char

El resultado de este comando es

char * (* fptab []) ()

Cuando vea esta declaración en el código de otra persona, puede encontrarle sentido al
"Hacer"

explicar char * (* fptab []) ()

La declaración adecuada para señal(2), ignorando los prototipos de funciones, se describe fácilmente en
cdeclidioma de:

declarar la señal como función devolviendo el puntero a la función devolviendo vacío

que produce

vacío (* señal ()) ()

La declaración de función resultante tiene dos conjuntos de paréntesis vacíos. El autor de
tal función podría preguntarse dónde poner los parámetros:

declarar la señal como función (arg1, arg2) devolviendo el puntero a la función devolviendo vacío

proporciona la siguiente solución (cuando se ejecuta con el -c opción):

void (* señal (arg1, arg2)) () {}

Si queremos agregar en los prototipos de función, el prototipo de función para una función como
as _Salida(2) se declararía con:

declare _exit como función (retvalue como int) devolviendo vacío

dando

void _exit (int retvalue) {}

Como un ejemplo más complejo usando prototipos de funciones, señal(2) podría definirse completamente como:

declarar la señal como función (x como int, y como puntero a la función (int) devolviendo vacío)
devolviendo el puntero a la función (int) devolviendo vacío

dando (con -c)

void (* señal (int x, void (* y) (int))) (int) {}

cdecl puede ayudar a averiguar dónde colocar los modificadores "const" y "volatile" en
declaraciones, así

declarar foo como puntero a const int

da

const int * foo

mientras

declarar foo como puntero constante a int

da

int * constante foo

C ++ decl puede ayudar a declarar referencias, por lo tanto

declarar x como referencia al puntero al carácter

da

char * & x

C ++ decl puede ayudar con punteros a miembros de clases, declarando así un puntero a un
miembro entero de una clase X con

declarar foo como puntero al miembro de la clase X int

da

int X :: * foo

y

declarar foo como puntero al miembro de la función de clase X (arg1, arg2) que devuelve el puntero
a la clase Y

da

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

La diagnostica


Las declaraciones declarar, emitir y explicar intentan señalar construcciones que no son
apoyado en C. En algunos casos, se hace una conjetura sobre lo que realmente se pretendía. En estos
En los casos, el resultado de C es una declaración de juguete cuya semántica funcionará solo en Algol-68. los
La lista de construcciones C no admitidas depende de la versión del lenguaje C que se esté utilizando.
utilizado (consulte las opciones ANSI, pre-ANSI y Ritchie). El conjunto de construcciones de C ++ compatibles
es un superconjunto del conjunto ANSI, con la excepción del noalias palabra clave.

Referencias


Estándar ANSI X3.159-1989 (ANSI C)

ISO / IEC 9899: 1990 (el estándar ISO)

Las preguntas frecuentes de comp.lang.c
http://www.eskimo.com/~scs/C-faq.top.html

Sección 8.4 del Manual de referencia de C dentro El C Programación Idioma por B. Kernighan &
D.Ritchie.

Sección 8 del Manual de referencia de C ++ dentro El C + + Programación Idioma por B.
Stroustrup.

AVISOS


La sintaxis pseudo-inglesa es excesivamente detallada.

Hay una gran cantidad de comprobaciones semánticas que no se están realizando.

cdecl fue escrito antes de que se completara el estándar ANSI C, y no se ha hecho ningún intento
para actualizarlo. Sin embargo, está muy cerca del estándar, con lo obvio
excepción de noalias.

cdeclEl alcance es intencionalmente pequeño. No te ayuda a descubrir las inicializaciones. Eso
espera que las clases de almacenamiento estén al comienzo de una declaración, seguidas de la
modificadores const, volatile y noalias, seguidos del tipo de variable. cdecl
no sabe nada sobre listas de argumentos de longitud variable. (Esto incluye el '', ...''
sintaxis.)

cdecl cree que todas las declaraciones que pronuncies se utilizarán como definiciones externas.
Algunos contextos de declaración en C permiten más flexibilidad que esta. Un ejemplo de esto es:

declarar argv como matriz de matriz de caracteres

donde cdecl responde con

Advertencia: no admitido en C - 'Matriz interna de tamaño no especificado'
(tal vez te refieres a "matriz de puntero")
char argv [] []

Apoyo tentativo para el noalias se incluyó la palabra clave porque estaba en el borrador de ANSI
especificaciones.

AUTORES


Escrito originalmente por Graham Ross, mejorado y ampliado por David Wolverton, Tony Hansen,
y Merlyn LeRoy.

Soporte de GNU readline y puerto Linux por David R. Conrad,[email protected]>

Use c ++ decl en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad