Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Última noticia

    (Puntos:3, Interesante)
    por Mu (11278) el Lunes, 08 Marzo de 2010, 12:29h (#1207513)
    ( http://press.asqueados.net/ | Última bitácora: Jueves, 17 Abril de 2014, 09:50h )
    C y C++ son lenguajes distintos. Comparten sintaxis en mayor medida, y C++ está construido añadiendo a C, pero es un lenguaje diferente a casi todos los efectos.

    Son tan iguales que el compilador no es capaz de compilar un archivo con extensión ".cpp", pero con código fuente en C.


    Es falso. Al compilador le da igual cómo se llame el archivo, le puedes poner .ptt si te apetece.

    Otra cosa muy diferente es que llames a gcc o a g++, pero tú eres el que deberías saber en qué está escrito el código. Si escribes una cosa u otra y no te preocupas, es cosa tuya, apuesto a que al compilador de pascal le pasas un código en perl y tampoco es capaz de compilarlo.

    Pero los problemas no terminan ahí, hasta los binarios son incompatibles: enlazar una función C con otra C++ es una tarea demoníaca.


    Pues claro que son incompatibles, porque pertenecen a lenguajes distintos. En concreto tienen que ser incompatibles porque C++ soporta sobrecarga (funciones con el mismo nombre pero distintos parámetros), por tanto los binarios de C++ tienen que guardar el nombre de la función más el tipo de los parámetros, allí donde C, que no soporta esa función, solamente guarda el nombre de la función.

    ¿Cómo arreglar el problema? Cuando uses código C dentro de tu programa de C++, rodea el código con un "extern C { ... }". Qué fáciles son las tareas demoníacas.

    ---

    En resumen: te estás viendo obligado a usar C y C++ y estás teniendo los problemas de novato. Más te vale echarle paciencia y tiempo para aprender las cosillas y entender los conceptos antes de despotricar de un lenguaje por el propio hecho de no estar habituado.

    No es que C o C++, que insisto en que son lenguajes distintos, apesten, es que no sabes usuarlos (aún).
    --
    Envíos descartados por Mu [barrapunto.com]
    Puntos de inicio:    1  punto
    Moderación   +1  
    Modificador extra 'Interesante'   0  
    Modificador por Bonus-Karma   +1  

    Total marcador:   3  
  • Re:Última noticia

    (Puntos:2)
    por Mu (11278) el Lunes, 08 Marzo de 2010, 12:47h (#1207525)
    ( http://press.asqueados.net/ | Última bitácora: Jueves, 17 Abril de 2014, 09:50h )
    Perdonad, he dicho una tontería fruto del óxido de este lenguaje.

    El código C tiene que estar en sus propios ficheros y compilados por su cuenta.

    El extern "C" { ... } (con sus comillas) tiene que rodear la declaración de las funciones, más fácilmente en un #include:

    // En un fichero fuente C++
    extern "C" {
    #include <mi_biblioteca_c.h>
    }
    También quiero insistir en que son dos lenguajes distintos, así que simplemente se está facilitando usar funciones escritas en un lenguaje dentro de otro.
    --
    Envíos descartados por Mu [barrapunto.com]
    [ Padre ]