elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No puedo compilar un programa en C Ayuda!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: No puedo compilar un programa en C Ayuda!  (Leído 5,941 veces)
AlexFifa

Desconectado Desconectado

Mensajes: 2


Ver Perfil
No puedo compilar un programa en C Ayuda!
« en: 11 Enero 2013, 00:06 am »

Pues yo casi siempre he programado en C++ y usaba C para cosas sencillas pero ahora me tope con un error inesperado que sinceramente no entiendo porque, ese mismo codigo lo he compilado como C++ y me funciona de maravilla

Yo uso el Visual Studio 2012 uso codigo nativo, ya aprendi a compilar en modo de consola.

Código
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. printf("\nHola Mundo!\n\n");
  5. int a;
  6.  
  7. return 0;
  8. }
  9.  

Me he fijado que siempre que declaro una variable despues de una llamada a función me lanza ese error:
Código
  1. Compilador de optimización de C/C++ de Microsoft (R) version 17.00.50727.1 para x64
  2. (C) Microsoft Corporation. Reservados todos los derechos.
  3.  
  4. simple.c
  5. simple.c(5) : error C2143: error de sintaxis : falta ';' delante de 'tipo'

Talvez me hace falta escribir algo pero ya repase incontables veces el codigo y a mi parecer esta bien hecho.

Les agradecería mucho si me ayudaran porque no entiendo que es lo que esta pasando



En línea

zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #1 en: 11 Enero 2013, 03:39 am »

En C, a diferencia de C++, las variables deben inicializarse justo al comienzo de cada ámbito.
Es decir, cada vez que veas que se abren llaves, lo primero que verás, o que deberías ver (en C) es la declaración y definición de variables.

C aún mantiene ciertas diferencias con C++, otra de ellas es que sea necesario escribir void como argumento de la función main().
En C++ eso significa "sin argumentos", mientras que en C precisa "una cantidad indefinida de argumentos, de tipos desconocidos".


« Última modificación: 11 Enero 2013, 05:32 am por zonahurbana » En línea

Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
AlexFifa

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #2 en: 11 Enero 2013, 04:54 am »

Muchas Gracias!
Sinceramente no me acordaba de esa regla en C
Con razón cuando veía código cualquiera escrito en C al inicio siempre se declaran variables!
Nuevamente Gracias!!  ;D
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #3 en: 11 Enero 2013, 07:08 am »

Citar
las variables deben inicializarse justo al comienzo de cada ámbito
No, las variables se pueden declarar en cualquier lado. Incluso se puede hacer algo como:
Código
  1. scanf("%d",&tam);
  2. int arr[tam]; /* fijate que se puede declarar un arreglo en tiempo de ejecucion despues de pedir el tamaño */

Para mi tu problema se debe a una configuracion del IDE que usas(como no lo uso no tengo idea)


Saludos
En línea

Ahorrate una pregunta, lee el man
zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #4 en: 11 Enero 2013, 13:48 pm »

¿Y eso que usted menciona sigue las normas del C estándar?
¿Cómo podría estar seguro de que algo sigue las normas de lo estándar?

Pregunto esto porque en otro foro yo comentaba que sí era posible leer una variable y luego usarla como tamaño de un arreglo, que el IDE no me mostraba problemas. Luego me decían que debía ser problema del IDE, que compilándolo directamente (a través de comandos) se mostraba un error diciendo que iba en contra de lo estándar.

Porfavor fíjese en la página 87 de este PDF:
Citar
Justamente en la parte que dice "Declaración de variables al vuelo".

Me dijeron que era una referencia muy buena.

Saludos.
« Última modificación: 11 Enero 2013, 20:42 pm por zonahurbana » En línea

Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #5 en: 11 Enero 2013, 19:44 pm »

Lei el pdf y dice lo que mensionaste antes; yo tenia entendido que segun el C99 era posible hacer lo que dije abajo
http://en.wikipedia.org/wiki/C99

Saludos

PD: espero q alguien con mas experiencia aclare esto
En línea

Ahorrate una pregunta, lee el man
kaiserr

Desconectado Desconectado

Mensajes: 242


constancia y dedicacion


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #6 en: 12 Enero 2013, 02:29 am »

No, las variables se pueden declarar en cualquier lado. Incluso se puede hacer algo como:
Código
  1. scanf("%d",&tam);
  2. int arr[tam]; /* fijate que se puede declarar un arreglo en tiempo de ejecucion despues de pedir el tamaño */

En lenguaje C por lo que tengo entendido, no se puede hacer eso. Las arrays has de declararlas con un valor constante.

Para utilizar espacios dinamicos se ha de utilizar, si recuerdo bien, la funcion malloc()
y free() (esta ultima para liberar espacio), que estan dentro de la libreria <stdlib.h>


Volviendo al tema principal:
Pues yo casi siempre he programado en C++ y usaba C para cosas sencillas pero ahora me tope con un error inesperado que sinceramente no entiendo porque, ese mismo codigo lo he compilado como C++ y me funciona de maravilla

Yo uso el Visual Studio 2012 uso codigo nativo, ya aprendi a compilar en modo de consola.

Código
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. printf("\nHola Mundo!\n\n");
  5. int a;
  6.  
  7. return 0;
  8. }
  9.  

Me he fijado que siempre que declaro una variable despues de una llamada a función me lanza ese error:
Código
  1. Compilador de optimización de C/C++ de Microsoft (R) version 17.00.50727.1 para x64
  2. (C) Microsoft Corporation. Reservados todos los derechos.
  3.  
  4. simple.c
  5. simple.c(5) : error C2143: error de sintaxis : falta ';' delante de 'tipo'

Talvez me hace falta escribir algo pero ya repase incontables veces el codigo y a mi parecer esta bien hecho.

Les agradecería mucho si me ayudaran porque no entiendo que es lo que esta pasando



Lo he probado en visual studio 2010 y tampoco me deja. Asi que debe de ser que solo se puede declarar al principio, de todas formas asi es como me enseñaron.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #7 en: 12 Enero 2013, 22:15 pm »

Citar
En lenguaje C por lo que tengo entendido, no se puede hacer eso

Lee el link q deje y vas a ver que se puede. Incluso hay un ejemplo de variable-length arrays


Saludos
En línea

Ahorrate una pregunta, lee el man
kaiserr

Desconectado Desconectado

Mensajes: 242


constancia y dedicacion


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #8 en: 12 Enero 2013, 22:40 pm »

Nose, de wikipedia no me fio la verdad. Antes de comentar tambien busque informacion y segun lo que lei no se podia... y lo probe y no me compilaba.

Ademas lo que dice wikipedia:
Citar
C (added in C99 and subsequently in C11 relegated to a conditional feature which implementations aren't required to support;[1] on some platforms, could be implemented previously with alloca() or similar functions)
mi ingles sera de lo peor que hay en el foro, pero entiendo que hay plataformas que no lo aceptan y que es mejor la funcion que puse antes.

Pero tampoco soy experto en C... asi que, tampoco puedo negarlo.

EDITO:
http://www.lcc.uma.es/~pscp/doc/cavanzado.pdf
« Última modificación: 12 Enero 2013, 22:43 pm por kaiserr » En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: No puedo compilar un programa en C Ayuda!
« Respuesta #9 en: 13 Enero 2013, 00:34 am »

Es verdad q wiki no es muy confiable, pero como en todos lados dice lo mismo me parecio indiferente subir ese link

Me olvide de comentar lo del C11, como aun no uso ninguna de las caracteristicas que se añadio no le di importancia(incluso mi compilador no lo tengo actualizado, asi q no soporta ese estandar)... Igual la idea era mostrar que se podia, al menos con mi editor de texto y el gcc puedo :)


Saludos

PD:
Citar
tenia que leer alguna pagina en particular?? porque no encontre nada respecto al tema(o sera el sueño que tengo :S)
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No puedo compilar!
Programación C/C++
markosliveup 2 9,072 Último mensaje 7 Marzo 2011, 16:05 pm
por Gunit
no puedo compilar programa en c++ usando switch.
Programación C/C++
maxiilius 2 2,796 Último mensaje 8 Octubre 2012, 23:23 pm
por maxiilius
ayuda no puedo compilar un sencillo ejemplo « 1 2 »
Programación C/C++
febee 10 6,217 Último mensaje 22 Enero 2014, 13:31 pm
por amchacon
ayuda,compilar programa
.NET (C#, VB.NET, ASP)
elpianista151 1 3,242 Último mensaje 26 Septiembre 2017, 09:33 am
por Eleкtro
MOVIDO: ayuda,compilar programa
Programación General
Eleкtro 0 2,366 Último mensaje 26 Septiembre 2017, 09:30 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines