código API leitura Zend Engine: O que significa ## (de hash duplo) significa?

StackOverflow https://stackoverflow.com/questions/653466

  •  19-08-2019
  •  | 
  •  

Pergunta

Por curiosidade, eu estou lendo o código API Zend Engine e encontrou um grande número de ## em suas # define do. Por exemplo, no /usr/lib/php5/Zend/zend_API.h:

#define ZEND_FN(name) zif_##name
#define ZEND_MN(name) zim_##name

O que os (dupla de hash) símbolos ## significar nestas duas linhas?

Foi útil?

Solução

Os ## concatena que há de antes do ## com o que está atrás dela. Assim, no seu exemplo fazendo ZEND_FN(foo) resultaria em zif_foo

Outras dicas

A resposta de eco RVV.

Esteja ciente de que quando concatenar strings literais você pode encontrar algumas inconsistências entre os pré-processadores / compiladores. Alguns exigirá a ##

#define STR_CAT(s1, s2)   s1 ## s2

como

const char s[] = STR_CAT("concat", "enation")

enquanto que outro relinga vontade para ele, e em vez disso requerem apenas que os dois literais será acompanhado pelo compilador (ao contrário do pré-processador), isso irá exigir

#define STR_CAT(s1, s2)   s1 s2

HTH

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top