Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

328
Vistas
¿Qué significa `0+ptr` (0 más un puntero)?

Encontré la siguiente macro en el código fuente de Perl:

 #define GvGP(gv) (0+(gv)->sv_u.svu_gp)

Donde sv_u.svu_gp se declara como GP* svu_gp en una unión sv_u .

No puedo encontrar ninguna definición de GP . Sin embargo, estoy más confundido acerca de lo que significa 0 más un puntero. ¿Alguien podría iluminarme por favor?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Supongo que se usa para convertirlo en un valor R, lo que lo hace de solo lectura en la práctica.

Ejemplo: se puede escribir

 x = 1;

pero esto no funcionará:

 0+x = 1;

Editar

Gracias a Dave Mitchell por señalar una confirmación relacionada en el repositorio de PERL.

agregue las macros GvCV_set() y GvGP_set().

y haga que GvCV() y GvGP() solo sean valores. ...

 @@ -52,7 +57,8 @@ struct gp { # define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); }) # define GvNAMELEN_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_LEN(GvNAME_HEK(gv)); }) #else -# define GvGP(gv) ((gv)->sv_u.svu_gp) +# define GvGP(gv) (0+(gv)->sv_u.svu_gp) +# define GvGP_set(gv,gp) ((gv)->sv_u.svu_gp = (gp)) # define GvFLAGS(gv) (GvXPVGV(gv)->xpv_cur) # define GvSTASH(gv) (GvXPVGV(gv)->xnv_u.xgv_stash) # define GvNAME_HEK(gv) (GvXPVGV(gv)->xiv_u.xivu_namehek)

De hecho, el propósito era hacer que GvGP fuera de solo lectura creando un valor r.

over 4 years ago · Santiago Trujillo Denunciar

0

Lo convierte en un rvalue, es decir, no puede hacer &(0+(gv)->sv_u.svu_gp) ; además, si fuera una matriz, es decir, 0+"string" , también decaería la matriz a un char * de un char [7] , por lo que esencialmente std::decay .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda