I have this piece of code below which seems very explicit and redundant, is there a way to choose variable type at run-time?
if(header->bitsPerSample == 16) {
int sample;
for (int i = 0; i < header->chunkSize - HEADER_SIZE + 8; i += sizeof(sample) * 2) {
fread(&sample, sizeof(sample), 1, fp);
fwrite(&sample, sizeof(sample), 1, new);
fread(&sample, sizeof(sample), 1, fp);
}
} else if(header->bitsPerSample == 8) {
char sample;
for (int i = 0; i < header->chunkSize - HEADER_SIZE + 8; i += sizeof(sample) * 2) {
fread(&sample, sizeof(sample), 1, fp);
fwrite(&sample, sizeof(sample), 1, new);
fread(&sample, sizeof(sample), 1, fp);
}
}
I'm looking for something like this:
if(header->bitsPerSample == 16)
sample is of type int
else if(header->bitsPerSample == 8)
sample is of type char
for (int i = 0; i < header->chunkSize - HEADER_SIZE + 8; i += sizeof(sample) * 2) {
fread(&sample, sizeof(sample), 1, fp);
fwrite(&sample, sizeof(sample), 1, new);
fread(&sample, sizeof(sample), 1, fp);
}