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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] ¿Por que no puedo llamar funciones en C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] ¿Por que no puedo llamar funciones en C?  (Leído 2,287 veces)
Proxmond

Desconectado Desconectado

Mensajes: 23


Ver Perfil
[Ayuda] ¿Por que no puedo llamar funciones en C?
« en: 3 Junio 2014, 05:04 am »

Tengo este pequeño código, que funcionalmente debería imprimir un hola mundo en consola, pero no, no me deja:

Código:
#include <stdlib.h>
#include <stdio.h>

void msgHola(){
     printf("Hola ");
     msgMundo();    
}

void msgMundo(){
     printf("Mundo");    
}

int main(){
    msgHola();
    
    system("PAUSE");
    return 0;
}

Entonces cuando llamo la función msgMundo(); desde la funcion msgHola(); me da este error:

conflicting types for 'msgMundo'
previous implicit declaration of 'msgMundo' was here
Build Error]  [main.o] Error 1

No se que error habrá, estuve mirando un par de vídeos acerca de funciones, y ellos lo hacen así, ¿Pero a mi no me funciona?

Saludos y espero puedan ayudarme.


« Última modificación: 3 Junio 2014, 05:40 am por Proxmond » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda] ¿Por que no puedo llamar funciones en C?
« Respuesta #1 en: 3 Junio 2014, 05:15 am »

basicamente porque llamas a msgMundo antes de declararla y el compilador la ve como un error


puedes arreglarla colocando primero msgMundo o haciendolo con prototipos (porque es más legible y "elegante"

así
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void msgHola();
  5. void msgMundo();
  6.  
  7. int main(){
  8.    msgHola();
  9.  
  10.    system("PAUSE");
  11.    return 0;
  12. }
  13.  
  14. void msgHola(){
  15.     printf("Hola ");
  16.     msgMundo();    
  17. }
  18.  
  19. void msgMundo(){
  20.     printf("Mundo\n\n");    
  21. }



En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Proxmond

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: [Ayuda] ¿Por que no puedo llamar funciones en C?
« Respuesta #2 en: 3 Junio 2014, 05:20 am »

basicamente porque llamas a msgMundo antes de declararla y el compilador la ve como un error


puedes arreglarla colocando primero msgMundo o haciendolo con prototipos (porque es más legible y "elegante"

así
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. void msgHola();
  5. void msgMundo();
  6.  
  7. int main(){
  8.    msgHola();
  9.  
  10.    system("PAUSE");
  11.    return 0;
  12. }
  13.  
  14. void msgHola(){
  15.     printf("Hola ");
  16.     msgMundo();    
  17. }
  18.  
  19. void msgMundo(){
  20.     printf("Mundo\n\n");    
  21. }



Muchas gracias, me funciono de maravilla, pero me quedo una duda cuando tu dijiste "prototipos" ¿A que te referías y que lo que es?
Saludos.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Ayuda] ¿Por que no puedo llamar funciones en C?
« Respuesta #3 en: 3 Junio 2014, 05:30 am »

los prototipos son "pre declaraciones" de las funciones, fijate como se declaran al inicio del codigo, eso le dice al compilador que funciones habrán en el codigo, no saturas tanto antes del main y el codigo está listo para declaraciones sin importar el orden, el prototipo se declara exactamente igual que la funcion pero sin el contenido...

(más info)

aqui un ejemplo más largo de como usarlos...

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int suma(int a, int b);
  5. int cuadrado(int c);
  6. void imprimirNumero(int d);
  7.  
  8. int main(){
  9.    int valor1 = suma(5,8);
  10.    int valor2 = cuadrado(5);
  11.    imprimirNumero(valor1);
  12.    imprimirNumero(valor2);
  13.    system("PAUSE");
  14.    return 0;
  15. }
  16.  
  17. int suma(int a, int b){
  18.     return (a+b);  
  19. }
  20.  
  21. int cuadrado(int c){
  22.     return (c*c);  
  23. }
  24.  
  25. void imprimirNumero(int d){
  26.     printf("%d\n",d);  
  27. }
  28.  
« Última modificación: 3 Junio 2014, 05:36 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Proxmond

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: [Ayuda] ¿Por que no puedo llamar funciones en C?
« Respuesta #4 en: 3 Junio 2014, 05:40 am »

los prototipos son "pre declaraciones" de las funciones, fijate como se declaran al inicio del codigo, eso le dice al compilador que funciones habrán en el codigo, no saturas tanto antes del main y el codigo está listo para declaraciones sin importar el orden, el prototipo se declara exactamente igual que la funcion pero sin el contenido...

(más info)

aqui un ejemplo más largo de como usarlos...

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int suma(int a, int b);
  5. int cuadrado(int c);
  6. void imprimirNumero(int d);
  7.  
  8. int main(){
  9.    int valor1 = suma(5,8);
  10.    int valor2 = cuadrado(5);
  11.    imprimirNumero(valor1);
  12.    imprimirNumero(valor2);
  13.    system("PAUSE");
  14.    return 0;
  15. }
  16.  
  17. int suma(int a, int b){
  18.     return (a+b);  
  19. }
  20.  
  21. int cuadrado(int c){
  22.     return (c*c);  
  23. }
  24.  
  25. void imprimirNumero(int d){
  26.     printf("%d\n",d);  
  27. }
  28.  

Buenísimo muchas gracias, tema resuelto.
Cualquier sugerencia, bienvenida sea.
Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como llamar automaticamente funciones AJAX ??
PHP
Diabliyo 3 7,610 Último mensaje 28 Agosto 2008, 15:53 pm
por Ragnarok
[DUDA] Cargar Dll de VB y Llamar las funciones de la misma!!!!!
Programación C/C++
m[a]rkus 0 3,222 Último mensaje 9 Agosto 2010, 18:29 pm
por m[a]rkus
Llamar dos funciones AJAX en onChange
Desarrollo Web
KateLibby 7 12,686 Último mensaje 26 Octubre 2011, 11:29 am
por KateLibby
Es posible llamar funciones en un bucle?
Programación C/C++
muymuyperdido 2 2,584 Último mensaje 25 Diciembre 2012, 20:16 pm
por lucaslopez0000
Duda llamar funciones
Programación C/C++
samsums91 7 3,133 Último mensaje 10 Enero 2013, 18:58 pm
por samsums91
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines