Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0xFer en 18 Abril 2015, 04:49 am



Título: duda sobre funciones
Publicado por: 0xFer en 18 Abril 2015, 04:49 am
Hola, tengo una función en un fichero diferente al main.cpp, y quiero que esa función pueda ser llamada desde el fichero main, cómo le hago? :-\

Me pueden dar unos ejemplos? , gracias de antemano.


Título: Re: duda sobre funciones
Publicado por: Gh057 en 18 Abril 2015, 06:06 am
Hola, simplemente debes indicar mediante comillas en una sentencia include, el arhivo de cabecera de funciones externas que quieras agregar:

por ejemplo en tu main.cpp
Código
  1. #include "cifrados.h"
  2.  
  3. int main()
  4. {
  5.   ....
  6.   caesar(x);
  7.   ....
  8. return 0;
  9. }

en tu biblioteca tendrìas las declaraciones de dichas funciones, un arhivo metodos_cifrado.h con algo como
Código
  1. #ifndef CIFRADOS_H
  2. #define CIFRADOS_H
  3.       .....
  4.        void caesar(*char);
  5.        void vigenere (*char);
  6.        .....
  7. #endif
  8.  

mientras que tus declaraciones las haces en metodos_cifrados.cpp

Código
  1. #include "cifrados.h"
  2.  
  3. void caesar(*char)
  4. {
  5.   ......
  6. }
  7. void vigenere(*char)
  8. {
  9.   ......
  10. }
  11.  
etc...
a grosso modo... Serìa el diseño de lo que se denomina una biblioteca estàtica.
Puedes ubicarla en una carpeta para que quede màs organizado... recuerda entonces poner correctamente el path en el include.

Creas la biblioteca en sí del siguiente modo..
Citar
gcc -static -c cifrados.cpp -o cifrados.o
ar -rcs libcifrados.a cifrados.o
(de esta manera puede accederse luego como si fuera una del sistema)

La enlazas luego por ejemplo con
Citar
g++ -L. -Icifrado.h main.cpp -o cifrando_texto

Bueno todo esto puede automatizarse con makefile, o bien hacerlo desde una IDE... pero bàsicamente esta es la idea. Saludos

(edito) modifiqué los nombres para evitar confusión en la biblioteca, así como agregué la parte de la creación de la biblioteca estática propiamente dicha, antes del enlace.


Título: Re: duda sobre funciones
Publicado por: 0xFer en 19 Abril 2015, 02:16 am
Hola, me funciona todo bien así como dices, pero cuando quiero hacer lo mismo con una función de tipo inline me lanza el error: undefined reference to `funcion(short*, short*, short)'|


Título: Re: duda sobre funciones
Publicado por: Gh057 en 20 Abril 2015, 11:43 am
Hola, debes tener todas las funciones externas declaradas correctamente en la cabecera .h, sino no podrás enlazarlas luego.