Cómo decirle a Eclipse que el código es C++11

En un proyecto C++ con Makefile, Eclipse no reconocía la parte de la librería estándar correspondiente a C++11.

Abriendo el fichero /usr/include/c++/4.8.2/mutex se comprueba que el problema es el valor definido para __cplusplus que Eclipse proporciona al analizador del código.

Para hacer que Eclipse le diga a su analizador que el código es C++11 hay que hacerlo en la configuración de rutas y macros del preprocesador (Project->Properties->C/C++ General->Preprocessor Include Paths, Macros, etc.: Pestaña “Providers”). Allí hay que añadir el parámetro -std=c++11 al comando utilizado para obtener las características del compilador.

Una vez añadido, el valor de __cplusplus será 201103L, con lo que se activarán los includes de la librería estándar correspondientes a C++11.

Edición 5 de enero de 2018:

En los proyectos C++ con Makefile generado por Eclipse también es necesario indicar la versión C++ si esta no es ISO C++98. Si utilizamos código C++11 sin haber configurado el proyecto Eclipse para soportar esta versión nos dará el correspondiente error en la compilación:

Para indicarle en esta ocasión al compilador (en el otro caso se indicaba explícitamente en el Makefile) que el código es ISO C++11 se debe acceder a la configuración de las herramientas de construcción del binario (Project -> Properties -> C/C++ Build ->Settings: Pestaña “Tool Settings”). Allí, hay una entrada para seleccionar el “dialecto” que debe entender el compilador, donde habrá que seleccionar ISO C++11 (-std=c++0x) o el que corresponda.

Referencias:
C++11 standard library indexing fails, __cplusplus recognized with wrong value

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *