2012-06-12 8 views
9

Me pregunto por qué mi programa C no imprime ninguna información. Soy 100% nuevo en la programación, y he podido aprender algunas cosas en Ruby y Python en las últimas semanas, pero no estoy llegando a ninguna parte con las cosas de C. Aquí está la línea de base total, el programa simple que todo el mundo aprende primero:¿Por qué no obtengo ningún resultado para el muy simple programa Hello World?

#include <stdio.h> 

int main() 

    { 
     printf("Hello World\n"); 
     return 0; 
    } 

así que tengo que escriben, y guardar como hola.c. Ahora cd I en el directorio donde se encuentra, y luego tratan

gcc hello.c 

y no pasa nada - no hay errores, nada. Si escribo en lugar

gcc hello.c -o hello 

un nuevo archivo ejecutable se escribe en mi directorio, y cuando lo abro, parece que la línea de comandos normal, y tiene "Hello World", escrito allí, como yo esperaba en mi terminal la primera vez.

También probé hacer hola.c un ejecutable en sí, pero cuando lo hago que consigo

syntax error near unexpected token `(' 
`int main()' 
+0

Gracias, sí, muy nuevo en esto, y gracias a todos por su respuesta clara y simple. ¡Ya lo pillo! – user1451632

Respuesta

12

Al escribir

gcc hello.c 

y no pasa nada, que es de esperar. O más precisamente, GCC compilará un ejecutable con el nombre predeterminado, que para mí es a.out. Si fuera entonces a escribir ./a.out en la línea de comando, veo el resultado.

Creo que puede haber un problema conceptual un poco más grande aquí a través de su fondo de Ruby/Python. Ruby y Python son (generalmente) idiomas interpretados, lo que significa que cuando crea un archivo de script, puede marcarlo como ejecutable y, a través del some magic, el sistema operativo iniciará un programa que leerá los archivos y los ejecutará por usted. C, sin embargo, está compilado. Entonces, cuando ejecuta GCC, eso toma su archivo fuente y lo convierte en un ejecutable, con el nombre predeterminado o especificado.En este punto, uno no esperaría ver ningún resultado a menos que haya un problema con el proceso de compilación. Luego puede ejecutar ./hello, que es un archivo ejecutable, y ver su resultado.

Eso también explica por qué no puede marcar hello.c como ejecutable y ejecutarlo. Primero debe compilarse en un archivo ejecutable. Parece que el sistema pretende que es un script de shell, que no lo es, y le da un error de sintaxis.

5

La primera vez, el ejecutable se llamó "a.out" (o "a.exe" en la Windows), que es el nombre predeterminado histórico dado a un ejecutable por gcc.

Usted debe pasar algún tiempo en averiguar la diferencia entre la fuente y ejecutable, y entre la apertura y ejecución, también ...

7

gcc hello.c generará un archivo llamado a.out
gcc hello.c -o hello generará un archivo llamado hello

Estos son archivos ejecutables, y necesita ejecutar/ejecutar estos para obtener el resultado.

Ejecutar estos como

./a.out o ./hello

7

gcc hello.c -o hola especifica que desea crear un ejecutable llamado hello.exe.

Debe compilar todos los archivos C y luego ejecutar el ejecutable para ejecutar el programa. Realmente no puedes ejecutar los archivos .c. Cuando no especifica un exe, simplemente compila. El hecho de que no tenga errores es algo bueno, ¡porque significa que su código es correcto! :)

3

¡Bienvenido a la programación y al desbordamiento de pila!

gcc hello.c 

compila el archivo y genera un archivo ejecutable 'a.out', pero no lo ejecuta. Es por eso que no pasó nada más en su línea de comando.
para iniciar la ejecución, que tendría que escribir:

./a.out 

tal como lo hizo para 'hola' Si he entendido bien.
Tendrás que aprender la diferencia entre la compilación, el enlace y la ejecución si deseas programar en C, buscarte un buen libro para principiantes o tutorial, ¡vale la pena!
¡Salud!

0

Usted tiene el error

syntax error near unexpected token `(' 
`int main()' 

al configurar las protecciones en su archivo de origen hola.c y trató de ejecutarlo.

El uso de gcc transforma su archivo fuente .c en un programa binario que puede ejecutar.

gcc -o hello hello.c 

La orden que he utilizado no es crítica. Solo estoy acostumbrado a compilar de esta manera. Se ha compilado esta manera

gcc hello.c -o hello 

lo cual está bien.

La compilación exitosa y enlace creado un archivo de salida llamado hola, que es lo que tendría que ejecutar

./hello 
-1

Ha intentado incluyendo #include<conio.h> e incluyen getch() antes return 0; para mostrar la ventana de terminal.

Cuestiones relacionadas