Имеется вот такой кусок кода.
case 's': // short
{
// Запись размера параметра.
sizeBuf = sizeof(short);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);
// Запись самого параметра.
short paramBuf = va_arg(args, short);
memcpy(curParamCell, ¶mBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}
case 'i': // int
{
// Запись размера параметра.
sizeBuf = sizeof(int);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);
// Запись самого параметра.
int paramBuf = va_arg(args, int);
memcpy(curParamCell, ¶mBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}
case 'f': // float
{
// Запись размера параметра.
sizeBuf = sizeof(float);
memcpy(curSizeCell, &sizeBuf, sizeof(sizeBuf));
curSizeCell += sizeof(sizeBuf);
// Запись самого параметра.
float paramBuf = va_arg(args, float);
memcpy(curParamCell, ¶mBuf, sizeof(paramBuf));
curParamCell += sizeof(paramBuf);
break;
}
Как вы можете заметить, отличаются части под case'ами очень незначительно, можно было бы сделать функцию. Но всё упирается в моё незнание, как передать тип в качестве параметра. Подскажите, пожалуйста.