Foros del Web » Programación para mayores de 30 ;) » C/C++ »

PROTOTIPOS - Curioso

Estas en el tema de PROTOTIPOS - Curioso en el foro de C/C++ en Foros del Web. Estoy haciendo un programa en c y tengo declaradas unas 10 funciones con sus prototipos. Compila, ejecuta y funciona. Pero al añadir una función más ...
  #1 (permalink)  
Antiguo 02/09/2010, 02:20
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
PROTOTIPOS - Curioso

Estoy haciendo un programa en c y tengo declaradas unas 10 funciones con sus prototipos. Compila, ejecuta y funciona.

Pero al añadir una función más a mi lista de prototipos da ERROR porque dice Expected ")".

void calcula_intervalo_error(float valor, int numero_muestras, float &error_relativo);

Me da ese error en este prototipo. Sin embargo lo borro, dejo los 10 que ya hay y funciona. Es decir, ke falla esa línea..pero..¿por qué?
  #2 (permalink)  
Antiguo 02/09/2010, 04:13
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: PROTOTIPOS - Curioso

Es un compilador de C++? Si es un compilador de C, deberia reclamarte al encontrar el "&".
Como estas compilando? Donde exactamente, dentro de esa linea indica el error?
  #3 (permalink)  
Antiguo 02/09/2010, 05:21
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

void calcula_intervalo_error(float valor, int numero_muestras, float &error_relativo);


Da el error en el caracter ), y el error es EXPECTED )
No es problema del compilador, que aunke yo prorame en c, el compilador es c++, porque me habría dado problemas en el resto de prototipos definidos, y esos funcionan perfectamente.

Gracias por la ayuda.
  #4 (permalink)  
Antiguo 02/09/2010, 05:58
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: PROTOTIPOS - Curioso

¿En el último parámetro, lo que quieres pasar es un puntero a float? Es que, si programas en C, float &error_relativo no tiene sentido, así que pienso que tu declaración debería ser

void calcula_intervalo_error (float valor, int numero_muestras, float *error_relativo);

Saludos,
  #5 (permalink)  
Antiguo 02/09/2010, 07:21
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

No, no es un puntero, es una variable normal float.

Tengo entendido que para pasar una variable por referencia en c,
en la declaración de la función se pone &.

He probado con *, y con & en la llamada que creo que es otra forma, pero
tampoco funciona.

¿Es muy raro verdad? :)
  #6 (permalink)  
Antiguo 02/09/2010, 09:45
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: PROTOTIPOS - Curioso

Cita:
Tengo entendido que para pasar una variable por referencia en c,
en la declaración de la función se pone &.
En C no hay referencias, eso solo aplica a código C++ como ya te han comentado.

Si estás seguro de estar utilizando un compilador C++ no deberías de tener problema. Ahora, si estás utilizando un IDE asegurate que tu archivo se compile como código C++, por ejemplo: si utilizas CodeBlocks o Dev-C++ me parece que ambos reconocen la extensión ".c" ó ".cpp", así que con que tu archivo fuente tenga extensión ".cpp" es suficiente; por otro lado, si utilizas Visual Studio de entrada no deberías de tener problema ya que por default compila en C++ que es lo contrario.
  #7 (permalink)  
Antiguo 02/09/2010, 11:30
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

El fichero es cpp.

Entonces, si estoy programando en c, ¿como hago para una variable que paso a una funcion y que se modifique su contenido en la funcion, luego surja efecto?
  #8 (permalink)  
Antiguo 02/09/2010, 12:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: PROTOTIPOS - Curioso

Cita:
Iniciado por Zunri Ver Mensaje
El fichero es cpp.

Entonces, si estoy programando en c, ¿como hago para una variable que paso a una funcion y que se modifique su contenido en la funcion, luego surja efecto?
Pasa un puntero como te indica Fw190.
En C no hay referencias.
  #9 (permalink)  
Antiguo 02/09/2010, 12:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: PROTOTIPOS - Curioso

Cita:
Iniciado por Zunri Ver Mensaje
No, no es un puntero, es una variable normal float.

Tengo entendido que para pasar una variable por referencia en c,
en la declaración de la función se pone &.

He probado con *, y con & en la llamada que creo que es otra forma, pero
tampoco funciona.

¿Es muy raro verdad? :)
Ni curioso ni raro. Simplemente tienes que mirar de nuevo los punteros en C.

Prototipo:

Código C:
Ver original
  1. void blablalba(....., float* v);

Función:

Código C:
Ver original
  1. void blablabla (...., float* v) {
  2. }
Llamada:

Código C:
Ver original
  1. blablabla (....., &valor_float) ;


Punto.
  #10 (permalink)  
Antiguo 02/09/2010, 14:43
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

Sigue dando EXPECTED ) jejeje

void calcula_intervalo_error(float valor, int numero_muestras, float* ic_izquierdo, float* ic_derecho, float* error_relativo);

INCLUSO kitando los punteros y kitando * como si fueran variables normales por valor, aun asi sigue diciendo expected )
entoncs ya no es por los punteros o lo ke sea. de 11 prototipos, 10 funcionan y ese ultimo sea como sea, da Expected )
  #11 (permalink)  
Antiguo 02/09/2010, 15:08
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: PROTOTIPOS - Curioso

Seguro que no hay error en el anterior? Pasanos el archivo completo
  #12 (permalink)  
Antiguo 02/09/2010, 15:12
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

Como lo paso, lo copio aki? o te doy mi mail??
son 400 lineas.
  #13 (permalink)  
Antiguo 02/09/2010, 15:38
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: PROTOTIPOS - Curioso

Si como dices es la declaración el problema, entonces lo siguiente no te debería de compilar:
Código C++:
Ver original
  1. void calcula_intervalo_error(float valor, int numero_muestras, float* ic_izquierdo, float* ic_derecho, float* error_relativo);
  2.  
  3. int main(){
  4.     return 0;
  5. }

En otro caso, revisa bien las líneas anteriores de tu código.
  #14 (permalink)  
Antiguo 02/09/2010, 15:41
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

eso si compila. Entonces el error debe esar en otro sitio.

Que debo mirar, hacia atrás del error o hacia adelante?
  #15 (permalink)  
Antiguo 02/09/2010, 15:51
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: PROTOTIPOS - Curioso

Podes por lo menos pegar textualmente el error? Con que estas compilando, en que sistema operativo..
  #16 (permalink)  
Antiguo 02/09/2010, 16:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: PROTOTIPOS - Curioso

Cita:
Iniciado por Zunri Ver Mensaje
eso si compila. Entonces el error debe esar en otro sitio.

Que debo mirar, hacia atrás del error o hacia adelante?
Lo más probable es que tengas que mirar hacia atrás.
Péga el código de todos modos. Utiliza http://pastebin.com/ y pega el enlace para que el resto lo podamos ver.
  #17 (permalink)  
Antiguo 03/09/2010, 01:31
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

Este es el link http://pastebin.com/zXv0NH5u

Todo funcionaba, hasta que he añadido la ultima funcion calcular_intervalo_error.
  #18 (permalink)  
Antiguo 03/09/2010, 04:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: PROTOTIPOS - Curioso

Hombre, claro. ¿Qué error te dice concretamente tu código? Hay que pegar todo el mensaje de error ¬¬

Es problema está en que 'error_relativo' está definido como constante/define, y lo estás utilizando como nombre de variable en el prototipo. Obviamente el compilador considera que estás declarando en el prototipo el último parámetro como "float 0.1".
  #19 (permalink)  
Antiguo 03/09/2010, 09:34
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

Pfff! muchisimas rgacias por la ayuda!
  #20 (permalink)  
Antiguo 03/09/2010, 09:34
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: PROTOTIPOS - Curioso

ya esta arreglado

Etiquetas: prototipos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.