У меня после двух структурыКак использовать переменную типа данных на основе условия?
typedef struct {
int day;
char action [10];
}DataType1;
и
typedef struct {
int day;
char action [50];
}DataType2;
Теперь я должен использовать только один тип структуры данных на основе некоторого условия. Я сделал что-то вроде этого
void *ptr;
DataType1 var1;
DataType2 var2;
if (validCondition == true)
{
ptr = &var1;
}
else
{
ptr = &var2;
}
//Used ptr in remaining code
Но с помощью этого кода я заполнения, что может быть есть некоторая конструкция полетела в моем коде, поэтому я нужен этот тип трюк, но в любом случае мне нужно это. Я думал, что какой-то другой способ тоже, но у меня есть сомнения, как это работает
if (validCondition == true)
{
#define GENERIC_TYPE DataType1;
}
else
{
#define GENERIC_TYPE DataType2;
}
GENERIC_TYPE myVar;
//use myVar in remaining code
Как я знаю линию, начиная с символа #
рассматривать как команду процессора и он будет известен и заменен во время компиляции. Но здесь у меня есть условие if
, в котором validCondition
изменилось время выполнения и в соответствии с этим определено #define
.
Итак, в этом случае, как процессор будет работать?
Также у кого-нибудь есть идея для определения типа переменной данных на основе условия?
Линии, начинающиеся с '#', являются ** препроцессорными директивами **, а не командой процессора. Компилятор полностью не знает о них, потому что они были заменены на этапе предварительной обработки, и на этом этапе нет исполняемого кода, поэтому вы не можете использовать блок if. Если условие является константой времени компиляции, используйте '# if' –
Почему бы просто не использовать' DataType2' исключительно? – a3f
@ a3f Point отметил..thanks – user2520119