Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!