c++ double-underscore

¿Por qué las personas usan__(doble guion bajo) tanto en C++?



double-underscore (6)

Estaba revisando un código C ++ de código abierto y noté una gran cantidad de puntajes dobles en el código, principalmente al comienzo de los nombres de las variables.

return __CYGWIN__;

Solo me pregunto si hay una razón para esto, o solo son algunos estilos de código de personas? Pensaría que lo hago difícil de leer.


A menos que sientan que son "parte de la implementación", es decir, las bibliotecas estándar, entonces no deberían.

Las reglas son bastante específicas, y son un poco más detalladas de lo que otros han sugerido.

Todos los identificadores que contienen un doble guión bajo o comienzan con un guión bajo seguido de una letra mayúscula están reservados para el uso de la implementación en todos los ámbitos, es decir, pueden usarse para macros.

Además, todos los demás identificadores que comienzan con un guión bajo (es decir, no seguidos de otro guión bajo o una letra mayúscula) están reservados para la implementación en el ámbito global. Esto significa que puede usar estos identificadores en sus propios espacios de nombres o en las definiciones de clase.

Esta es la razón por la cual Microsoft usa nombres de funciones con un guion bajo y todo en minúsculas para muchas de sus funciones de biblioteca de tiempo de ejecución central que no son parte del estándar C ++. Se garantiza que estos nombres de función no entren en conflicto con las funciones estándar de C ++ o las funciones de código de usuario.


Además de las bibliotecas que respondieron muchas otras personas, algunas personas también nombran macros o valores #define para usar con el preprocesador. Esto facilitaría el trabajo y podría haber permitido que se solucionaran los errores en los compiladores más antiguos.

Como otros mencionados, ayuda a prevenir la colisión de nombres y ayuda a delinear entre las variables de la biblioteca y las tuyas.


De acuerdo con el Estándar C ++, los identificadores que comienzan con un guión bajo están reservados para las bibliotecas. Los identificadores que comienzan con dos guiones bajos están reservados para los vendedores del compilador.


Desde la Programación en C ++, Reglas y Recomendaciones :

El uso de dos guiones bajos (`__ '') en los identificadores está reservado para el uso interno del compilador según el estándar ANSI-C.

Los signos de subrayado (''_'') a menudo se usan en los nombres de las funciones de la biblioteca (como "_main" y "_exit"). Para evitar colisiones, no comience un identificador con un guión bajo.


Es algo que no debes hacer en un código "normal". Esto garantiza que los compiladores y las bibliotecas del sistema puedan definir símbolos que no colisionen con los suyos.


Los comentarios anteriores son correctos. __Symbol__ es generalmente un token mágico proporcionado por su proveedor de compilador (o preprocesador) útil. Quizás los más utilizados son __FILE__ y __LINE__ , que el preprocesador C amplía para indicar el nombre de archivo y el número de línea actuales. Esto es útil cuando desea registrar algún tipo de error de aserción del programa, incluida la ubicación textual del error.