/ / ¿Por qué algunas funciones / variables tienen el carácter “_” delante de ellas, en C ++? [duplicado] - c ++

¿Por qué algunas funciones / variables tienen el carácter “_” delante de ellas, en C ++? [duplicado] - c ++

He visto mucho últimamente, en juegos u otras aplicaciones que los miembros de datos de clase, o métodos u otras cosas tienen "_" delante del nombre. Por ejemplo, tomado para DXUT.cpp (Directx) _Acquires_lock_(g_cs) o _Releases_lock_(g_cs) o _tmain . Hay numerosos ejemplos como este en la programación de juegos como allí (Tomado de GameFromScratch Tutorial)

  static GameState _gameState;
static sf::RenderWindow _mainWindow;

Estos son sólo algunos miembros de datos de algún tipo.

¿Hay alguna razón detrás del _ char? Si es específicamente para algo?

Respuestas

12 para la respuesta № 1

Por lo general, cuando ve un nombre con un guión bajo, puede

  • pertenece a la implementación (C ++), o

  • Ha sido elegido por alguien que desconoce la primera posibilidad.

No es recomendable utilizar nombres con un guión bajo en el código de usuario.

Cualquier nombre que comience con un guión bajo está reservado parala implementación en el espacio de nombres global, y cualquier nombre que comience con un guión bajo seguido de mayúsculas, se reserva para la implementación en cualquier lugar.

Como recuerdo también cualquier nombre con dos guiones bajos sucesivos, está reservado.


Un programador novato puede usar el guión bajo para indicar "miembro de datos".

La convención habitual, para los que tienen conocimiento de lo anterior, es en cambio un subrayado final y / o un prefijo como m o my.

P.ej. El subrayado final se utiliza, según recuerdo, en Boost, mientras que un m o my Se utiliza el prefijo (aún como recuerdo) en MFC.


2 para la respuesta № 2

_Acquires_lock_(g_cs) o _Releases_lock_(g_cs)

Esa convención de nomenclatura utiliza nombres reservados lo que significa que solo la implementación del compilador tiene permiso para usarlos.

Eso garantiza que la implementación pueda usar nombres que nunca puedan coincidir con macros u otros nombres definidos por los usuarios, ya que los usuarios no pueden usar esos nombres reservados.

Los nombres con un solo guión bajo seguido de una letra minúscula son solo formas idiomáticas de denotar una variable miembro o un detalle de implementación privada que no forma parte de la API.


-8 para la respuesta № 3

Por lo general un guión bajo (_) antes del nombre de la variable significa que forma parte de la implementación de C ++ en su plataforma. Evita las variables iniciales con guión bajo en tu propio código.

Lee las respuestas a "¿Cuáles son las reglas sobre el uso de un guión bajo en un identificador de C ++?" para obtener más información sobre las convenciones de nomenclatura de C ++ (especialmente la de subrayado).