Digitare la selezione da una tabella di dispatcher

0

Sto tentando di utilizzare una tabella di invio per selezionare un tipo di dati per eseguire il cast di qualcosa e non riuscire a capire la sintassi per questo.

g_cast_table[] =
{
    {'h', short int}
          or
    {'h', "short int"}
}

outcome: (short int)q

In questo momento la mia tabella è impostata per avere un nome char e un tipo char *. Questo sta causando un gran numero di errori mentre provo a compilare. C'è un modo reale per farlo o dovrei ripensare al mio processo?

    
posta M. Sharpe 29.01.2018 - 07:58
fonte

1 risposta

3

I tipi non sono valori di prima classe in C, quindi non puoi scrivere codice che cerca un tipo di cast in base a qualche stato di runtime. Il tuo esempio non è nemmeno valido C.

A parte questo, come useresti un tale codice?

int n = magic_casting_function(x);

Che cosa succederebbe in magic_casting_function per qualche motivo ha deciso che x dovrebbe essere castato a char* ? Non dovresti quindi assegnarlo a int .

Come più spunti di riflessione, quale sarebbe la firma di magic_casting_function ?

magic magic_casting_function(void *x);  // like this?

La cosa più vicina a magic nel codice sopra è void* , ma ... Non penso che dovresti andare in quel modo e trattare tutto nel tuo programma come un gruppo di puntatori void.

Dovresti "ripensare al tuo processo", secondo me.

    
risposta data 29.01.2018 - 08:44
fonte

Leggi altre domande sui tag