Los guiones bajos dobles están reservados para la implementación
La respuesta más votada cita Programación en C ++: Reglas y recomendaciones :
"El uso de dos guiones bajos (` __ ') en los identificadores está reservado para el uso interno del compilador de acuerdo con el estándar ANSI-C ".
Sin embargo, después de leer algunos estándares de C ++ y C, no pude encontrar ninguna mención de que los guiones bajos estuvieran restringidos solo al uso interno del compilador. Los estándares son más generales, reservando doble subrayado para la implementación .
C ++
C ++ (borrador de trabajo actual, consultado el 26 de mayo de 2019) establece en lex.name
:
- Cada identificador que contiene un doble subrayado __ o comienza con un subrayado seguido de una letra mayúscula está reservado a la implementación para cualquier uso.
- Cada identificador que comienza con un guión bajo se reserva para la implementación para su uso como nombre en el espacio de nombres global.
C
Aunque esta pregunta es específica de C ++, he citado secciones relevantes de los estándares C 99 y 17:
C99 sección 7.1.3
- Todos los identificadores que comienzan con un guión bajo y una letra mayúscula u otro guión bajo están siempre reservados para cualquier uso.
- Todos los identificadores que comienzan con un guión bajo siempre se reservan para su uso como identificadores con alcance de archivo en los espacios de nombre ordinario y de etiqueta.
C17 dice lo mismo que C99.
¿Qué es la implementación ?
Para C / C ++, la implementación se refiere libremente a los recursos establecidos necesarios para producir un ejecutable a partir de los archivos fuente del usuario. Esto incluye:
- preprocesador
- compilador
- enlazador
- biblioteca estándar
Implementaciones de ejemplo
Hay varias implementaciones diferentes de C ++ mencionadas en Wikipedia . (sin vínculo de ancla, ctrl + f "implementación")
Aquí hay un ejemplo de la implementación de C / C ++ de Digital Mars que reserva algunas palabras clave para una característica de ellos.