Autor
|
Tema: No puedo compilar un programa en C Ayuda! (Leído 5,941 veces)
|
AlexFifa
Desconectado
Mensajes: 2
|
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. #include <stdio.h> int main(void) { int a; return 0; }
Me he fijado que siempre que declaro una variable despues de una llamada a función me lanza ese error: Compilador de optimización de C/C++ de Microsoft (R) version 17.00.50727.1 para x64 (C) Microsoft Corporation. Reservados todos los derechos. simple.c 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
Mensajes: 178
RS, JC.
|
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
Mensajes: 2
|
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!!
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
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: 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
Mensajes: 178
RS, JC.
|
¿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: 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
Mensajes: 373
|
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/C99Saludos PD: espero q alguien con mas experiencia aclare esto
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
kaiserr
Desconectado
Mensajes: 242
constancia y dedicacion
|
No, las variables se pueden declarar en cualquier lado. Incluso se puede hacer algo como: 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. #include <stdio.h> int main(void) { int a; return 0; }
Me he fijado que siempre que declaro una variable despues de una llamada a función me lanza ese error: Compilador de optimización de C/C++ de Microsoft (R) version 17.00.50727.1 para x64 (C) Microsoft Corporation. Reservados todos los derechos. simple.c 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
Mensajes: 373
|
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
Mensajes: 242
constancia y dedicacion
|
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: 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
Mensajes: 373
|
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: 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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
No puedo compilar!
Programación C/C++
|
markosliveup
|
2
|
9,072
|
7 Marzo 2011, 16:05 pm
por Gunit
|
|
|
no puedo compilar programa en c++ usando switch.
Programación C/C++
|
maxiilius
|
2
|
2,796
|
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
|
22 Enero 2014, 13:31 pm
por amchacon
|
|
|
ayuda,compilar programa
.NET (C#, VB.NET, ASP)
|
elpianista151
|
1
|
3,242
|
26 Septiembre 2017, 09:33 am
por Eleкtro
|
|
|
MOVIDO: ayuda,compilar programa
Programación General
|
Eleкtro
|
0
|
2,366
|
26 Septiembre 2017, 09:30 am
por Eleкtro
|
|