Передача типа переменной в качестве параметра функции

Можно ли передать тип переменной как часть параметра функции, например:

void foo(varType type)
{
  // Cast to global static
  unsigned char bar;
  bar = ((type *)(&static_array))->member;
}

Я помню, что это как-то связано с GCC typeof и использованием макросов?

25
задан freonix 12 July 2011 в 01:29
поделиться

2 ответа

Я не понимаю, как вы могли бы сделать это в общем случае, учитывая, что C является статически типизированным языком .

Компилятор должен знать во время компиляции, что тип type *, чтобы иметь возможность генерировать ссылку на ->member.

3
ответ дан 28 November 2019 в 20:33
поделиться

Вы можете сделать перечисление для всех возможных типов и использовать переключатель для разыменования:

typedef enum {
    CHAR,
    INT,
    FLOAT,
    DOUBLE
} TYPE;

void foo(TYPE t, void* x){
    switch(t){
        case CHAR:
            (char*)x;
            break;
        case INT:
            (int*)x;
            break;
         ...
    }
}
33
ответ дан 28 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: