paulo1205
(usa Ubuntu)
Enviado em 01/05/2013 - 12:24h
wellingtonsr escreveu:
...
#include
void main(){
printf("Teste");
}
Esse não é um programa em C devidamente formatado.
Em primeiro lugar, num sistema operacional como o Unix ou Windows, que caracteriza um ambiente de execução que o padrão do C chama de
hosted environment, a declaração de main deveria ser feita usando uma das duas seguintes formas.
int main(void) /* caso o programa não receba argumentos
do ambiente de execução. */
int main(int argc, char **argv) /* caso possa receber
argumentos do ambiente de execução. */
Além disso, é óbvio que falta alguma coisa na linha que contém o
#include, que deveria ser, no caso em questão,
#include <stdio.h>. Certamente foi o Blogger que assumiu, por causa dos delimitadores "<" e ">", que o autor colocou um marcador do HTML. Mesmo assim, o autor do artigo deveria ter revisto o material após a publicação, para não o deixar no ar com um erro crasso, ainda que seja por culpa da ferramenta.
Ok. Salve-o como teste.c e vamos compilar.
Na linha de comando, vamos criar o objeto do nosso programa.
gcc -c teste.c
Observa-se que é criado o arquivo teste.o. Vamos usá-lo agora para criar nosso arquivo executável.
gcc teste.o -o teste
Nenhum erro crasso. Mesmo assim, dois comentários:
1) Eu recomendo sempre que se compilem os programas com o máximo de diagnósticos ligados, fazendo com que o compilador realize uma boa parte da detecção de eventuais lapsos do programador. Se ele tivesse usado as opções "
-Wall -Werror -O2 -pedantic", o compilador mesmo teria apontado os erros mostrados acima.
2) No caso de programas pequenos, é possível fazer com que o compilador gere diretamente o programa executável, sem se ter de gerar o arquivo objeto manualmente. A geração e manutenção de arquivos objetos faz mais sentido em programas maiores, divididos em vários arquivos fontes, para evitar ter de recompilar todo o programa quando se aletrou apenas uma pequena parte, contida em um pequeno arquivo fonte específico. A fim de acelerar o processo de geração do executável, tal prática é também geralmente associada ao uso de um mecanismo de automatização da compilação, como um
Makefile. Para programas pequenos e compilação manual, passar pela etapa de geração do objeto acaba consumindo mais tempo, em lugar de o poupar.
Deixei comentários lá, também, para que os eventuais leitores tenham acesso às mesmas dicas.