El lenguaje C ++ permite la mezcla de C ++ y C en un archivo fuente. Por ejemplo,
extern "C" {
struct bar { /* ... */ }
}
¿C ++ o alguna vez ha admitido otros "lenguajes de enlace" que no sean C? por ejemplo extern "Pascal"
oextern "Haskell"
programming-languages
c++
c
dkaranovich
fuente
fuente
extern "C"
equivalente para interactuar entre síextern "C"
solo afecta la vinculación, no la sintaxis y la semántica del texto dentro del bloque. En otras palabras, sigue siendo C ++ dentro de eseextern "C"
bloque; los nombres de los símbolos simplemente no están destrozados. Ver stackoverflow.com/q/1041866/712605Respuestas:
extern "C"
puede ser el único requerido:Sin embargo, pueden existir otros según esta cita:
fuente
En muchos (la mayoría) de los entornos, "extern" C "es la convención de enlace predeterminada para cualquier lenguaje en el sistema.
Por lo tanto, dependiendo del sistema operativo y la implementación del lenguaje "extranjero" "externo C" es todo lo que necesita para llamar a un programa en otro lenguaje compilado.
fuente
extern "Language"
sintaxis " ", lo hacen a través de la extensión C específica de la plataforma, por lo que para C ++ sigue siendo justoextern "C"
y especial La palabra clave especifica la convención de llamada diferente.G ++ en algún momento es compatible
extern "Java"
para interactuar con el código Java compilado por GCJ./programming/15167867/extern-java-block-in-gcc
fuente
¡No! C ++ solo admite C como "lenguajes de enlace".
"C" externa {barra de estructura {/ * ... * /}}
La sintaxis como arriba significa que no cambia el nombre de la variable, estructura o función. Debido a que C ++ puede cambiar el nombre de la variable, estructura o función para implementar la Clase, el Espacio de nombres y la sobrecarga de funciones.
Si no hace esto, el enlazador tal vez no pueda encontrar el objeto de la variable, la estructura de la función.
C ++ está diseñado para ser compatible con C. La "C" externa es la forma de implementar compatible con C.
fuente
extern "C"
yextern "C++"
son los únicos obligatorios, pero las implementaciones pueden proporcionar otros.