Domanda

Sto cercando di capire un codice C ++ che legge una dll in modo esplicito. Fa Uno sa come la linea #define LFE_API(name) LFE_##name name sotto funziona davvero? Capisco #define LFE_API(name) LFE_##name ma confondersi su l'ultima "nome".

    struct Interface
{
    #   ifdef LFE_API
    #       error You can't define LFE_API before. 
    #   else
    #       define LFE_API(name) LFE_##name name
                LFE_API(Init);
                LFE_API(Close);
                LFE_API(GetProperty);
    #       undef LFE_API
    #   endif
};
È stato utile?

Soluzione

Dal momento che la prima parte della macro (LFE _ ## nome) appena concatena le due parti, una chiamata a LFE_API è la creazione di una variabile denominata nome con il tipo LFE ## nome, come ad esempio:

LFE_API (Init) si espande per LFE_Init Init;

Altri suggerimenti

LFE_Init Init;

ecc.

Esegui g ++ -E sul codice per vedere ciò che viene prodotto. Un elemento di struttura ha bisogno di un tipo e un nome.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top