Tal vez no soy la comprensión de las diferencias entre C y C++, sino cuándo y por qué necesitamos utilizarCuándo usar extern "C" en palabras simples?
extern "C" {
? Aparentemente es una "convención de ligamiento".
Lo leí brevemente y noté que todos los archivos de cabecera .h incluidos con MSVS rodean su código con él. ¿Qué tipo de código es exactamente "código C" y NO "código C++"? Pensé que C++ incluía todo el código C?
Supongo que este no es el caso y que C++ es diferente y que las características/funciones estándar existen en una u otra pero no en ambas (es decir: printf es C y cout es C++), pero que C++ es compatible con versiones anteriores a través de la declaración externa "C". ¿Es esto correcto?
Mi siguiente pregunta depende de la respuesta a la primera, pero la voy a preguntar aquí de todos modos: como los archivos de encabezado MSVS que están escritos en C están rodeados por la "C" externa {...}, ¿cuándo lo harían? ¿Necesitas usar esto tú mismo en tu propio código? Si su código es código C y está tratando de compilarlo en un compilador C++, ¿no debería funcionar sin problemas porque todos los archivos h estándar que incluye ya tendrán la cosa externa "C" en ellos con el compilador C++?
¿Tiene que usar esto al compilar en C++ pero al enlazar a bibliotecas C ya construidas o algo así?
C++ NO es un superconjunto de C. Hay una C válida que no es válida C++. –
@ Theatrus-- ese tipo de afirmación pide un ejemplo. – mmr
theatrus: ¿Pero eso tampoco es siempre el caso? – Russel