Хотелось бы просто использовать препроцессор, но ввод поступает во время выполнения ... Я попробовал условный typedef, не работает Или условное объявление, не работает. Хотя я не ожидал, что они тоже. И поскольку весь следующий код является точно таким же, я не хочу переписывать его дважды ... один раз для каждой структуры.
Есть ли способ сделать это в C? Или другой подход, с тем же результатом. Все мои поиски в Google привели меня к шаблонам C ++. Если мне неясно, может быть, это поможет:
#include <stdio.h>
struct a32 {
short bits;
unsigned long val;
// more values, not necessarily in the same order
};
struct a64 {
short bits;
unsigned long long val;
// etc...
};
int main(void) {
struct a32 mystruct;
// read mystruct from somewhere
if(mystruct.bits == 64) {
// then I need mystruct to be a64
// re-read mystruct
}
// exact same code for both structs
printf("%d\n", sizeof(mystruct.val));
return 0;
}
Любая помощь будет оценена.