我正在编写一个必须规范化音频*.wav
文件的程序。有一个任务“显示标题的数据”:ChunkId
等等ChunkSize
。
我想创建一个名为的函数display_hdr
(为了在 main.c 文件中有更少的代码,所以阅读这段代码会变得更容易)。为此,我必须将此函数头的变量(类型头的变量)作为参数传递,但它写道
functions.h|1|error: unknown type name 'header'|
主.c:
typedef struct FMT
{
char SubChunk1ID[4];
int SubChunk1Size;
short int AudioFormat;
short int NumChannels;
int SampleRate;
int ByteRate;
short int BlockAlign;
short int BitsPerSample;
} fmt;
typedef struct DATA
{
char Subchunk2ID[4];
int Subchunk2Size;
int Data[];
} data;
typedef struct HEADER
{
char ChunkID[4];
int ChunkSize;
char Format[4];
fmt S1;
data S2;
} header;
Header 的变量是这样声明的:
header hdr;
现在,当我尝试传递hdr
给我的函数时,它会打印一个error
:
functions.h|1|error: unknown type name 'header'|
函数.h
void display_hdr( header hdr )
{
printf("\n*********************************\n");
printf("WAVE file's metadata:\n\n");
printf("%4.4s\n", hdr.ChunkID );
printf("%d\n", hdr.ChunkSize );
printf("%4.4s\n", hdr.Format );
printf("%4.4s\n", hdr.S1.SubChunk1ID );
printf("%d\n", hdr.S1.SubChunk1Size );
printf("%d\n", hdr.S1.AudioFormat );
printf("%d\n", hdr.S1.NumChannels );
printf("%d\n", hdr.S1.SampleRate );
printf("%d\n", hdr.S1.ByteRate );
printf("%d\n", hdr.S1.BlockAlign );
printf("%d\n", hdr.S1.BitsPerSample );
printf("%4.4s\n", hdr.S2.Subchunk2ID );
printf("%d\n", hdr.S2.Subchunk2Size ); /// SAMPLES' SIZE
printf("\n*********************************\n");
return;
}
那么,如何将您自己(非标准)类型的变量作为参数传递给函数?