Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

372
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda