InglêsFrancêsEspanhol

Ad


favicon do OnWorks

c ++ decl - Online na nuvem

Execute c ++ decl no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando c ++ decl que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


cdecl, c ++ decl - Compor declarações de tipo C e C ++

SINOPSE


cdecl [-a | - + | -p | -r] [-ciqdDV]
[[ arquivos ...] | обяснявам ... | declarar ... | casto ... | conjunto ... | ajudar | ? ]
c ++ decl [-a | - + | -p | -r] [-ciqdDV]
[[ arquivos ...] | обяснявам ... | declarar ... | casto ... | conjunto ... | ajudar | ? ]
обяснявам ...
declarar ...
casto ...

DESCRIÇÃO


Cdecl (E c ++ decl) é um programa para codificação e decodificação de declarações do tipo C (ou C ++).
A linguagem C é baseada no (rascunho proposto) Padrão ANSI X3J11; opcionalmente, o C
linguagem pode ser baseada na definição pré-ANSI definida por Kernighan & Ritchie's A C
Programação Língua livro ou a linguagem C definida pelo compilador Ritchie PDP-11 C.
A linguagem C ++ é baseada na linguagem de Bjarne Stroustrup A C + + Programação Língua, mais o
adições da versão 2.0 ao idioma.

OPÇÕES


-a Usa o dialeto ANSI C da linguagem C.

-p Usa o dialeto pré-ANSI definido pelo livro de Kernighan & Ritchie.

-r Usa o dialeto definido pelo compilador Ritchie PDP-11 C.

- + Use a linguagem C ++, em vez de C.

-i Executa no modo interativo (o padrão ao ler de um terminal). Isso também
ativa a solicitação, edição de linha e histórico de linha.

-q Silencia o prompt. Desativa o prompt no modo interativo.

-c Cria código C ou C ++ compilável como saída. Cdecl irá adicionar um ponto e vírgula ao final
de uma declaração e um par de chaves no final de uma definição de função.

-d Ativa as informações de depuração (se compiladas).

-D Ativa as informações de depuração YACC (se compiladas).

-V Exibe informações sobre a versão e sai.

INVOCAÇÃO


Cdecl pode ser chamado com vários nomes diferentes (renomeando o executável,
ou criando um link simbólico ou link físico para ele). Se for invocado como cdecl então ANSI C é o
idioma padrão. Se for invocado como c ++ decl então C ++ é o padrão. Se for invocado
como também обяснявам, castoou declarar então ele interpretará o resto da linha de comando
opções como parâmetros para esse comando, execute o comando e saia. Também fará
isso se o primeiro argumento não switch na linha de comando for um desses três comandos.
A entrada também pode vir de um arquivo.

Cdecl lê os arquivos nomeados para instruções no idioma descrito abaixo. UMA
a transformação é feita dessa linguagem para C (C ++) ou pseudo-inglês. Os resultados de
esta transformação é escrita na saída padrão. Se nenhum arquivo for nomeado, ou um nome de arquivo
de `` - '' for encontrado, a entrada padrão será lida. Se a entrada padrão vier de um
terminal, (ou o -i opção for usada), um prompt será escrito no terminal antes de cada
linha. O prompt pode ser desligado pelo -q opção (ou o conjunto sem prompt comando). Se
cdecl é invocado como обяснявам, declarar or casto, ou o primeiro argumento é um dos comandos
discutido abaixo, a lista de argumentos será interpretada de acordo com a gramática mostrada
abaixo, em vez de nomes de arquivo.

Quando é executado de forma interativa, cdecl usa a biblioteca GNU readline para fornecer palavras-chave
conclusão e histórico de linha de comando, muito parecido com bater(1) (qv). Pressionar TAB irá
complete a palavra-chave parcial antes do cursor, a menos que haja mais de uma possível
conclusão, caso em que um segundo TAB mostrará a lista de conclusões possíveis e
reexibir a linha de comando. As teclas de seta esquerda e direita e backspace podem ser usados ​​para
edição de forma natural, e as teclas de seta para cima e para baixo recuperam as linhas de comando anteriores
da história. A maioria das outras teclas familiares, como Ctrl-U para excluir todo o texto do
cursor de volta ao início da linha, trabalhe conforme o esperado. Existe uma ambigüidade entre
que o int e para dentro palavras-chave, mas cdecl vai adivinhar qual você quis dizer, e sempre adivinha
corretamente.

Você pode usar cdecl conforme você cria um programa C com um editor como vi(1) ou emacs(1). Vocês
simplesmente digite a versão em pseudo-inglês da declaração e aplique cdecl como um filtro
para a linha. (No vi(1), digite ``!! cdecl''.)

Se o crio programa opção -c for usado, a saída incluirá ponto e vírgula após
declarações de variáveis ​​e pares de chaves após as declarações de funções.

A -V opção imprimirá os números da versão dos arquivos usados ​​para criar o processo.
Se a fonte for compilada com informações de depuração ativadas, o -d opção irá habilitar
para ser produzido. Se a fonte for compilada com informações de depuração YACC ativadas, o
-D opção irá habilitá-lo para a saída.

COMANDO IDIOMA


Existem seis declarações no idioma. o declarar declaração compõe um tipo C
declaração de uma descrição detalhada. o casto declaração compõe um tipo C convertido como
pode aparecer em uma expressão. o обяснявам declaração decodifica uma declaração de tipo C ou
elenco, produzindo uma descrição detalhada. o ajudar (ou ?) declaração fornece uma ajuda
mensagem. o desistir (ou saída) declaração (ou o fim do arquivo) sai do programa. o conjunto
instrução permite que as opções da linha de comando sejam definidas interativamente. Cada afirmação é
separados por um ponto e vírgula ou uma nova linha.

SINÔNIMOS


Alguns sinônimos são permitidos durante uma declaração:

personagem é sinônimo de char
constante é sinônimo de const
enumeração é sinônimo de enum
func é sinônimo de função
inteiro é sinônimo de int
ptr é sinônimo de ponteiro
ref é um sinônimo de referência
ret é sinônimo de retorno
estrutura é sinônimo de estrutura
vetor é sinônimo de array

O recurso de preenchimento TAB conhece apenas as palavras-chave na coluna certa do
estrutura, não os da coluna esquerda. O preenchimento do TAB é muito menos útil quando o
caracteres principais de diferentes palavras-chave são os mesmos (as palavras-chave conflitam com um
outro), e colocar as duas colunas causaria alguns conflitos.

GRAMÁTICA


A seguinte gramática descreve o idioma. Na gramática, as palavras em "<>" não são
terminais, palavras em minúsculas são terminais que se representam. Letras maiúsculas nuas
palavras são outros tokens lexicais: NADA significa a string vazia; NOME significa um identificador C;
NUMBER significa uma seqüência de dígitos decimais; e NL significa a nova linha ou ponto e vírgula
caracteres.

:: = NADA
| NL
:: = NADA
| declarar NAME como
| declarar
| lançar NAME em
| elenco
| explique
| explique
| explique ( ) opcional-NOME
| definir
| ajuda | ?
| Sair
| saída
:: = array de
| matriz NUMBER de
| função retornando
| função ( ) voltando
| ponteiro para
| ponteiro para membro da classe NAME
| referência a
|
:: =
| *
| NOME :: *
| E
:: = ()
| ( )
| []
| [ NÚMERO ]
| ( )
| NOME
:: = NADA
| ()
| ( ) ()
| ( ) ( )
| ( )
| NOME :: *
| *
| E
| []
| [ NÚMERO ]
:: = |
|
| struct NAME | sindicato NAME | enum NAME | nome da classe
:: = ,
|
|
:: = ,
| NADA
|
|
| Como
:: = int | char | duplo | flutuar | vazio
:: = |
:: = curto | longo | não assinado | assinado |
:: = | NADA
:: = const | volátil | noalias
:: = auto | extern | registrar | estático
:: = NADA |
:: = NADA |
| criar | nocreate
| prompt | sem prompt
| Ritchie | preansi | ansi | cplusplus
| depurar | nodebug | yydebug | noyydebug

SET OPÇÕES


A conjunto comando tem várias opções. Você pode digitar conjunto or conjunto opções para ver o
opções atualmente selecionadas e um resumo das opções que estão disponíveis. O primeiro
quatro correspondem ao -a, -p, -r e -+ opções de linha de comando, respectivamente.

ansi Use o dialeto ANSI C da linguagem C.

preansi
Use o dialeto pré-ANSI definido pelo livro de Kernighan & Ritchie.

Ritchie
Use o dialeto definido pelo compilador Ritchie PDP-11 C.

cplusplus
Use a linguagem C ++, em vez de C.

[não] prompt
Ative ou desative o prompt no modo interativo.

[não] criar
Ative ou desative o acréscimo de ponto e vírgula ou chaves às declarações
saída por cdecl. Isso corresponde ao -c opção de linha de comando.

[não] depurar
Ative ou desative as informações de depuração.

[não] yydebug
Ative ou desative as informações de depuração YACC.

Nota: as informações de depuração e as informações de depuração YACC estão disponíveis apenas se tiverem
foi compilado em cdecl. As duas últimas opções correspondem ao -d e -D linha de comando
opções, respectivamente. A informação de depuração é normalmente usada no desenvolvimento do programa, e
geralmente não é compilado em executáveis ​​distribuídos.

EXEMPLOS


Para declarar uma matriz de ponteiros para funções que são como Malloc(3), faça

declara fptab como array de ponteiro para função, retornando ponteiro para char

O resultado deste comando é

char * (* fptab []) ()

Quando você vê esta declaração no código de outra pessoa, você pode entendê-la por
fazer

explicar char * (* fptab []) ()

A declaração adequada para sinal(2), ignorando protótipos de função, é facilmente descrito em
cdeclidioma de:

declara o sinal como um ponteiro de retorno de função para o void de retorno de função

que produz

void (* sinal ()) ()

A declaração da função resultante tem dois conjuntos de parênteses vazios. O autor de
tal função pode questionar onde colocar os parâmetros:

declara sinal como função (arg1, arg2) retornando ponteiro para função retornando void

fornece a seguinte solução (quando executado com o -c opção):

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

Se quisermos adicionar os protótipos de função, o protótipo de função para uma função como
as _saída(2) seria declarado com:

declarar _exit como função (retvalue as int) retornando void

dando

void _exit (int retvalue) {}

Como um exemplo mais complexo usando protótipos de função, sinal(2) pode ser totalmente definido como:

declara sinal como função (x como int, y como ponteiro para função (int) retornando void)
retornando ponteiro para função (int) retornando void

dando (com -c)

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

Cdecl pode ajudar a descobrir onde colocar os modificadores "const" e "volátil" em
declarações, portanto

declara foo como um ponteiro para const int



const int * foo

enquanto

declara foo como apontador const para int



int * const foo

C ++ decl pode ajudar a declarar referências, portanto

declara x como referência ao ponteiro para o personagem



char * & x

C ++ decl pode ajudar com ponteiros para membros de classes, declarando assim um ponteiro para um
membro inteiro de uma classe X com

declara foo como um ponteiro para um membro da classe X int



int X :: * foo

e

declara foo como um ponteiro para o membro da classe X função (arg1, arg2) retornando o ponteiro
para a classe Y



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

DIAGNÓSTICO


As declarações declarar, lançar e explicar tentam apontar construções que não são
suportado em C. Em alguns casos, é feita uma suposição sobre o que realmente se pretendia. Nesses
casos, o resultado C é uma declaração de brinquedo cuja semântica funcionará apenas em Algol-68. o
lista de construções C não suportadas depende de qual versão da linguagem C está sendo
usado (consulte as opções ANSI, pré-ANSI e Ritchie). O conjunto de construções C ++ com suporte
é um superconjunto do conjunto ANSI, com exceção do noalias palavra chave.

REFERÊNCIAS


Padrão ANSI X3.159-1989 (ANSI C)

ISO / IEC 9899: 1990 (o padrão ISO)

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

Seção 8.4 do Manual de Referência C dentro A C Programação Língua por B. Kernighan &
D. Richie.

Seção 8 do Manual de Referência C ++ dentro A C + + Programação Língua por B.
Stroustrup.

RESSALVAS


A sintaxe do pseudo-inglês é excessivamente prolixa.

Há muitas verificações semânticas que não estão sendo feitas.

Cdecl foi escrito antes de o padrão ANSI C ser concluído e nenhuma tentativa foi feita
para atualizá-lo. No entanto, está muito próximo do padrão, com o óbvio
exceção de noalias.

Cdeclo escopo de é intencionalmente pequeno. Isso não ajuda você a descobrir inicializações. Isto
espera que as classes de armazenamento estejam no início de uma declaração, seguido pelo
modificadores const, volatile e noalias, seguidos do tipo da variável. Cdecl
não sabe nada sobre listas de argumentos de comprimento variável. (Isso inclui o ``, ...''
sintaxe.)

Cdecl pensa que todas as declarações que você proferir serão usadas como definições externas.
Alguns contextos de declaração em C permitem mais flexibilidade do que isso. Um exemplo disso é:

declara argv como array de array de char

onde cdecl responde com

Aviso: não compatível com C - 'Matriz interna de tamanho não especificado'
(talvez você queira dizer "matriz de ponteiro")
char argv [] []

Suporte provisório para o noalias a palavra-chave foi inserida porque estava no ANSI de rascunho
especificações.

AUTORES


Originalmente escrito por Graham Ross, melhorado e expandido por David Wolverton, Tony Hansen,
e Merlyn LeRoy.

Suporte GNU readline e porte Linux por David R. Conrad,[email protegido]>

Use c ++ decl online usando serviços onworks.net


Servidores e estações de trabalho gratuitos

Baixar aplicativos Windows e Linux

Comandos Linux

Ad