SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: AnioN en Domingo 1 de Abril de 2007, 15:42

Título: Uso De Funciones De C En C++
Publicado por: AnioN en Domingo 1 de Abril de 2007, 15:42
hola, me parecio curioso el hecho de que para usar funciones de C en C++ haya que hacerlo de la siguiente manera.
Código: Text
  1. extern "C" void xmalloc (unsigned size);
  2.  

o en bloque:

Código: Text
  1. extern "C"
  2. {
  3.      .
  4.      .
  5.      .
  6. }
  7.  
Lo que no entiendo es el porque hay que hacerlo asi?, a que se refiere el hecho de usar una funcion de C en C++, el codigo no es el mismo en C++?
Título: Re: Uso De Funciones De C En C++
Publicado por: JuanK en Domingo 1 de Abril de 2007, 17:07
nunca he visto que toque usar eso en C++,

Es posible que hagan eso la función esta definida en otro archivo de código fuente o en un ensamblado diferente  :huh:
Título: Re: Uso De Funciones De C En C++
Publicado por: Eternal Idol en Domingo 1 de Abril de 2007, 17:52
Para C++ el compilador/enlazador usa  una decoracion para las funciones, que es lo que permite la sobrecarga, entonces para usar una funcion de C hay que indicarle que lo es sino intentara encontrar una de C++ y no lo lograra.

Código: Text
  1.  
  2. void prueba(int x)
  3. {
  4.   //codigo
  5. }
  6.  
  7.  

Por ejemplo, esa funcion en C con VC++ genera el simbolo _prueba mientras que en C++ genera el simbolo ?prueba@@YAXH@Z.

http://en.wikipedia.org/wiki/Name_mangling (http://en.wikipedia.org/wiki/Name_mangling)
Título: Re: Uso De Funciones De C En C++
Publicado por: AnioN en Domingo 1 de Abril de 2007, 20:13
yo lo que no entiendo a lo que se refiere cuando dice "una funcion de C", como se distingue una funcion de C y otra de C++?