Estou com dificuldades para compilar um programa C ++ que escrevi.
Este programa é muito simples e, dentro do meu conhecimento, está em conformidade com todas as regras estabelecidas no Padrão C ++. Eu li toda a ISO / IEC 14882: 2003 duas vezes para ter certeza.
O programa é o seguinte:
Aqui está a saída que recebi ao tentar compilar este programa com o Visual C ++ 2010:
c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172
Desanimado, tentei o g ++ 4.5.2, mas foi igualmente inútil:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Imaginei que o Clang (versão 3.0 tronco 127530) deve funcionar, pois é muito elogiado por sua conformidade com os padrões. Infelizmente, ele nem me deu uma de suas bonitas mensagens de erro destacadas:
c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Para ser sincero, não sei realmente o que significa qualquer uma dessas mensagens de erro.
Muitos outros programas em C ++ têm arquivos de origem com uma extensão .cpp , então pensei que talvez fosse necessário renomear meu arquivo. Mudei o nome para helloworld.cpp , mas isso não ajudou. Acho que existe um bug muito sério no Clang porque, quando tentei usá-lo para compilar o programa renomeado, ele virou, imprimiu "84 avisos e 20 erros gerados". e fiz meu computador emitir um bipe muito!
O que eu fiz de errado aqui? Perdi uma parte crítica do padrão C ++? Ou todos os três compiladores são realmente tão quebrados que não podem compilar este programa simples?
fonte
Originalmente de Overv @ reddit .
fonte
Tente desta maneira:
fonte
Seu
<
e>
,(
e)
,{
e}
não parecem combinar muito bem; Tente desenhá-los melhor.fonte
}
quem está causando o problema. Tente se concentrar em combinar isso com o{
Você pode tentar o seguinte script python. Observe que você precisa instalar o PIL e o pytesser .
Para usá-lo, faça:
fonte
Você esqueceu de usar o Comic Sans como uma fonte, por isso está errado.
fonte
Não consigo ver uma nova linha depois dessa última chave.
Como você sabe: "Se um arquivo de origem que não estiver vazio não terminar com um caractere de nova linha, ... o comportamento será indefinido".
fonte
Este programa é válido - não encontro erros.
Meu palpite é que você tem um vírus em sua máquina. Seria melhor se você reformatasse sua unidade e reinstale o sistema operacional.
Deixe-nos saber como isso funciona ou se você precisar de ajuda com a reinstalação.
Eu odeio vírus.
fonte
Descobri que é útil não escrever meu código no vidro do monitor com um marcador mágico, mesmo que pareça legal quando estiver realmente preto. A tela fica cheia muito rápido e as pessoas que me dão um monitor limpo me chamam de nomes toda semana.
Alguns dos meus funcionários (eu sou gerente) estão me ligando para comprar um daqueles computadores de almofada vermelha com os botões. Disseram que não precisarei de marcadores e que posso limpar a tela quando estiver cheia, mas tenho que ter cuidado ao agitá-la. Eu acho que é delicado assim.
É por isso que contrato pessoas inteligentes.
fonte
File format not recognized
Você precisa formatar corretamente seu arquivo. Isso significa usar as cores e fontes corretas para o seu código. Consulte as documentações específicas para cada compilador, pois essas cores variam entre os compiladores;)fonte
Você esqueceu o pré-processador. Tente o seguinte:
fonte
Você escreveu o programa à mão e depois o digitalizou no computador? É isso que está implícito no "helloworld.png". Se for esse o caso, você deve estar ciente de que o padrão C ++ (mesmo em sua edição mais recente) não requer a presença de reconhecimento óptico de caracteres e, infelizmente, não está incluído como um recurso opcional em nenhum compilador atual.
Você pode considerar a possibilidade de transpor os gráficos para um formato textual. Qualquer editor de texto simples pode ser usado; o uso de um processador de texto, embora capaz de gerar uma boa impressão, provavelmente resultará no mesmo erro que você recebe ao tentar digitalizar.
Se você é realmente aventureiro, pode tentar escrever seu código em um processador de texto. Imprima, de preferência usando uma fonte como OCR-A . Depois, pegue sua impressão e digitalize novamente. A digitalização pode ser executada em um pacote OCR de terceiros para gerar um formulário de texto. O formulário de texto pode ser compilado usando um dos muitos compiladores padrão.
Cuidado, no entanto, com o grande custo do papel que isso incorrerá durante a fase de depuração.
fonte
Desenhe o include abaixo para compilá-lo:
Ouvi dizer que ele pode compilar erros de sintaxe ...
fonte
#include <JonSkeet>
.Infelizmente, você selecionou três compiladores que suportam vários idiomas, não apenas C ++. Todos eles têm que adivinhar a linguagem de programação que você usou. Como você provavelmente já sabe, o formato PNG é adequado para todas as linguagens de programação, não apenas para C ++.
Normalmente, o compilador pode descobrir o próprio idioma. Por exemplo, se o PNG é obviamente desenhado com giz de cera, o compilador saberá que ele contém Visual Basic. Se parece que foi desenhado com uma lapiseira, é fácil reconhecer o engenheiro no trabalho, escrevendo o código FORTRAN.
Este segundo passo também não ajuda o compilador, neste caso. C e C ++ parecem muito semelhantes, até o
#include
. Portanto, você deve ajudar o compilador a decidir qual idioma ele realmente é. Agora, você pode usar meios não padronizados. Por exemplo, o compilador do Visual Studio aceita os argumentos de linha de comando / TC e / TP ou você pode usar a opção "Compilar como: C ++" no arquivo de projeto. O GCC e o CLang têm seus próprios mecanismos, que eu não conheço.Portanto, eu recomendaria usar o método padrão para informar ao seu compilador que o código a seguir está em C ++. Como você já descobriu até agora, os compiladores C ++ são muito exigentes quanto ao que aceitam. Portanto, a maneira padrão de identificar C ++ é pela intimidação que os programadores adicionam ao código C ++. Por exemplo, a seguinte linha esclarecerá ao seu compilador que o que se segue é C ++ (e é melhor compilá-lo sem queixas).
fonte
#pragma
era a maneira correta de "receber uma mensagem" para o compilador?Tente este:
fonte
endl
(L) nãoend1
(um). Mas +1 foi bem feito!O seu compilador está definido no modo especialista ?! Se sim, não deve ser compilado. Os compiladores modernos estão cansados do "Hello World!"
fonte
O OCR diz:
O que é muito bom, para ser justo.
fonte
Obviamente, você deve formatar seu disco rígido.
Realmente, esses erros não são tão difíceis de ler.
fonte
Eu converti seu programa de PNG para ASCII, mas ele ainda não é compilado. Para sua informação, tentei com largura de linha de 100 e 250 caracteres, mas ambos produzem resultados comparáveis.
fonte
O primeiro problema é que você está tentando retornar um valor incorreto no final da função principal. O padrão C ++ determina que o tipo de retorno main () é int, mas você está tentando retornar o conjunto vazio.
O outro problema é - pelo menos com o g ++ - que o compilador deduz a linguagem usada no sufixo do arquivo. Do g ++ (1):
A correção desses itens deixará você com um aplicativo Hello World totalmente funcional, como pode ser visto na demonstração aqui .
fonte
Sua fonte é péssima, como um analisador pode ler isso? Faça um curso de caligrafia.
fonte
Seus compiladores estão esperando ASCII , mas esse programa é obviamente escrito usando EBCDIC .
fonte
Você está tentando compilar uma imagem.
Digite o que você escreveu manualmente em um documento chamado main.cpp, execute esse arquivo no seu compilador e, em seguida, execute o arquivo de saída.
fonte
Você precisa especificar a precisão de sua saída precedida por dois pontos imediatamente antes da chave de fechamento final . Como a saída não é numérica, a precisão é zero, então você precisa disso:
: 0}
fonte
adicionar :
logo após incluem: P: D
fonte
std
o tempo todo. Lembra-me de não conseguir um.Parece que seu compilador não suporta arquivos nessa codificação hmm .... Tente convertê-lo para ASCII.
fonte
O problema está na definição de sintaxe, tente usar régua e bússolas para obter uma descrição mais clássica!
Felicidades,
fonte
Tente mudar a interface de entrada. O C ++ espera que um teclado seja conectado ao seu computador, não um scanner. Pode haver problemas de conflito de periféricos aqui. Não verifiquei o ISO Standard se a interface de entrada do teclado é obrigatória, mas isso é verdade para todos os compiladores que já usei. Mas talvez a entrada do scanner esteja agora disponível no C99 e, nesse caso, seu programa realmente funcione. Caso contrário, você terá que esperar a próxima versão padrão e atualização dos compiladores.
fonte
Você poderia tentar cores diferentes entre parênteses, talvez um pouco de verde ou vermelho ajudasse? Eu acho que seu compilador não pode reconhecer tinta preta: P
fonte
Eu sou o único que não consegue reconhecer o personagem entre 'retorno' e o ponto e vírgula? Pode ser isso!
fonte