Possible Duplicate:
How to check (via the preprocessor) if a C source file is being compiled as C++ code¿Cómo escribo un archivo de cabecera C que se puede usar en programas C++?
Estoy tratando de encontrar una macro estándar que probará si un archivo de cabecera se está compilando como C o como C++. El propósito de esto es que el encabezado se puede incluir por código C o C++, y debe comportarse de manera ligeramente diferente dependiendo de qué. Específicamente:
En C, necesito que esto sea el código:
extern size_t insert (const char*);
En C++, necesito que esto sea el código:
extern "C" size_t insert (const char*);
Además, hay una manera de evitar poniendo # ifdef alrededor de cada declaración en el encabezado?
Puedo ser parcial, pero yo diría que esta pregunta también tiene que ver con extern. Como nunca antes había tenido conocimiento de la sintaxis "extern {...}", mi respuesta seleccionada es mucho más útil que la que se proporciona en el duplicado propuesto. Editaré la pregunta para mostrar esta diferencia. – Collin
He dejado una x-ref a esta pregunta en el duplicado propuesto. Podría mejorar la distinción entre los dos por un título revisado como '¿Cómo definir condicionalmente' extern "C" 'o simplemente' extern' autodetectando el compilador C o C++? "O algo similar a esas líneas generales. –
@JonathanLeffler He editado el título para reflejar lo que (creo) se está pidiendo realmente, como se ilustra en el ejemplo en el texto. Sin embargo, al buscar esto, se reveló un título duplicado: http://stackoverflow.com/ preguntas/8742534/including-c-header-in-c-file ... pero no contenido duplicado. –