• Domingo 15 de Diciembre de 2024, 19:54

Autor Tema:  Porque En Los Modulos  (Leído 1995 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Porque En Los Modulos
« en: Viernes 25 de Febrero de 2005, 00:05 »
0
El titulo no lo explica musho. He notado desde simpre que en los  modulos .h que vienen con el compilador tales como iostream, stdio, stlib  las variables tienen siempre el nombre antepuesto por un "_" o inclusive dos de esos "__" .
Código: Text
  1.  
  2. _cnt
  3. _CRTIMP int __cdecl
  4. return __F->_flag & _IOEOF
  5. _CRTIMP FILE* __cdecl
  6. __STRICT_ANSI__
  7. _CRTIMP void __cdecl
  8.  
  9.  
?Para que se les añade el guion bajo?
Acaso a mayor cantidad de guiones bajos mas profesional luce?
Inclusive el C++ Builder  hay una plabra reservada que se para declarar funciones protected que es: __fastcall
Realmente, el codigo se vuelve muy dificil de leer con tantos guiones bajos.

Blag

  • Moderador
  • ******
  • Mensajes: 697
    • Ver Perfil
    • http://atejada.blogspot.com
Re: Porque En Los Modulos
« Respuesta #1 en: Viernes 25 de Febrero de 2005, 03:17 »
0
Citar
?Para que se les añade el guion bajo?
Acaso a mayor cantidad de guiones bajos mas profesional luce?
Realmente, el codigo se vuelve muy dificil de leer con tantos guiones bajos.

Porque......Si fué dificil hacerlo.....Que sea más dificil leerlo  :lol:

Saludos,

Blag  :devil:

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Porque En Los Modulos
« Respuesta #2 en: Viernes 25 de Febrero de 2005, 13:53 »
0
Citar
Porque......Si fué dificil hacerlo.....Que sea más dificil leerlo
Código: Text
  1.  
  2.   :smartass:   ajajajajaj idnetne_ is_ aroha__ oralC__
  3.  
  4.  
Traduciendo..... __Claro _ahora __si entendi jajajajaja  :smartass:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Porque En Los Modulos
« Respuesta #3 en: Viernes 25 de Febrero de 2005, 14:36 »
0
hasta donde es es parte del standart de generacion de codigo  cdecl (no se que es eso)
pero este standart le dice al compilador como debe generar los simbolos anivel de codigo de maquina para facilitar la depuracion...

tras varias capas se pueden reusar componentes pero como no se peuden usar los mismos nombre, entonces se les agreaga un _,
asi por ejemplo para el DOS en el c++ se podiain incluir rutinas asm asi:

asm
{
 ... ..
.....
}


pero luego en windows, como esta rutina no funcionaba ogual pues los noveles de proteccion del sistema no lo permitian enfonces era:

_asm
{
}

y conservaban
asm
{
}

solo por compatibilidad hacia atras... (muy mala por cierto)

y ahora en el .net framework c# se usa

__asm
{
}

y las otras no se si existan alli.

Bueno esto es lo que creo, analizando con las cosas que me ha tocado hacer en ese tema pero si alguien sabe una raon mejor sustentada seria bueno que nos la dijera.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Porque En Los Modulos
« Respuesta #4 en: Viernes 25 de Febrero de 2005, 20:05 »
0
Hola.

Que yo sepa, el programador no debe declarar identificadores que comiencen con '_', ya que están reservados para la implementación de las librerías que acompañan al compilador. Así se evita que identificadores internos no documentados interfieran con el código del usuario.

Un saludo.

Ruben3d

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Porque En Los Modulos
« Respuesta #5 en: Viernes 25 de Febrero de 2005, 20:31 »
0
eso sera lo que se define en  ese standart cdecl?

pues si los cambiamos pr otro ( no recuerdo el nombre), ya el compilador no usa _ sino @....
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Porque En Los Modulos
« Respuesta #6 en: Domingo 6 de Marzo de 2005, 18:28 »
0
También se usa '_' para palabras reservadas que dependen del compilador, es decir, que no son parte de la especificación del leguaje. Un ejemplo es la palabra reservada que le indica al compilador qué convención de llamada hay que usar para las funciones, si no va a ser la habitual (por ejemplo: __fastcall, __cdecl, etc., en compiladores de Microsoft).

Un saludo.

Ruben3d