Visual C (2008) is acting as if I never included a header file (wave.h) that I am using, but the #include statement is definitely there. Here's my main (BPM analyze.c):
#include "stdafx.h"
#include "common.h"
#include "sound.h"
#include "wave.h"
int main(int argc, char* argv[])
{
SAMPLE samples[2];
unsigned int i, j;
WAV_FILE file;
FRAME *frames;
getWaveFile(&file, "Lobby.wav");
extractFrames(frames, &file, 0, 1);
//printf("32 bit: ");
for(i = 0; i <= 1; i++)
{
for(j = 0; j < file->info->numChannels; j++)
{
printf("%d ", frames[i][j]);
}
}
getchar();
return 0;
}
Common.h (probably not the issue):
#ifndef COMMON_H
#define COMMON_H
#define MAX(a, b) ((a > b) ? a : b)
typedef enum{false, true} bool;
#endif
Sound.h:
#ifndef SOUND_H
#define SOUND_H
typedef unsigned int SAMPLE_32BIT;
typedef unsigned int SAMPLE_24BIT;
typedef unsigned short SAMPLE_16BIT;
typedef unsigned char SAMPLE_8BIT;
typedef union
{
SAMPLE_32BIT _32bit;
SAMPLE_24BIT _24bit;
SAMPLE_16BIT _16bit;
SAMPLE_8BIT _8bit;
} SAMPLE;
typedef SAMPLE **FRAME;
#endif
Wave.h:
#ifndef WAVE_H
#define WAVE_H
typedef struct
{
unsigned short formatTag;
unsigned short numChannels;
unsigned int samplesPerSec;
unsigned int bytesPerSec;
unsigned short blockAlign;
} WAVE_INFO;
typedef struct
{
WAVE_INFO *info;
SAMPLE *data;
} WAVE_FILE;
bool getWaveData(WAVE_FILE *file, char *filename)
{
// function body, not important
}
void extractWaveFrames(FRAME *frames, WAVE_FILE *file, unsigned int startFrame, unsigned int endFrame)
{
// function body, not important
}
#endif
And here's Visual C's complaints:
bpm analyze.c(11) : error C2065: 'WAV_FILE' : undeclared identifier
bpm analyze.c(11) : error C2146: syntax error : missing ';' before identifier 'file'
bpm analyze.c(11) : error C2065: 'file' : undeclared identifier
bpm analyze.c(12) : error C2275: 'FRAME' : illegal use of this type as an expression
sound.h(15) : see declaration of 'FRAME'
bpm analyze.c(12) : error C2065: 'frames' : undeclared identifier
bpm analyze.c(14) : warning C4013: 'getWaveFile' undefined; assuming extern returning int
bpm analyze.c(14) : error C2065: 'file' : undeclared identifier
bpm analyze.c(15) : warning C4013: 'extractFrames' undefined; assuming extern returning int
bpm analyze.c(15) : error C2065: 'frames' : undeclared identifier
bpm analyze.c(15) : error C2065: 'file' : undeclared identifier
bpm analyze.c(20) : error C2065: 'file' : undeclared identifier
bpm analyze.c(20) : error C2223: left of '->info' must point to struct/union
bpm analyze.c(22) : error C2065: 'frames' : undeclared identifier
bpm analyze.c(22) : error C2109: subscript requires array or pointer type
I get those same errors if I don't include wave.h at all. Any clue what is going on?