Я имел этот метод (упрощенный):Общий интерфейс для функции
void addraw(struct chain*a, uint8_t *data).
Суть в том, я мог бы назвать его от функций, таких как:
void adduint16(struct chain*a, uint16_t val)
{
uint8_t x[2] = {0};
memcpy(x, &val, 2);
addraw(chain, x);
}
Say теперь, если у меня есть метод:
void addstr(struct chain*a, char* val)
Я мог бы легко сделать:
void addstr(struct chain*a, char* val)
{
addraw(chain, (uint8_t*) val);
}
Но я думаю, что это не всегда нормально пройти char *
, как uint8_t
указатель и т.д.
Так оказывают функцию addraw такого прототип лучше?
void addraw(struct chain*a, void *data)
можно ли избежать проблемы с литой? и по-прежнему использовать Как я хочу? например, с помощью цепей и струн, как я показал выше,
Это код C. Не C#. – itsme86
'uint8_t x [2] = {0}; memcpy (x, & val, 2); '... вы копируете только 16 бит 32-битного значения? – nneonneo
@nneonneo Откуда вы получаете 32 бита? – Marlon