【发布时间】:2020-01-07 04:16:00
【问题描述】:
我的程序不允许我输出这些值,因为“不允许类型名称”(以星号突出显示)。这意味着什么?怎么了?我正在尝试解析这个 MIDI 文件,似乎我需要使用这些数据类型,因为程序输出了不正确的值(只有 MThd 输出正确,其余的是随机的十六进制值)。我能做些什么来解决这个问题?我是编码新手,如果这是一个愚蠢的问题,我很抱歉。
#include <iostream>
#include <fstream>
#include <stdint.h>
typedef struct MIDI_CHUNK_HEADER {
char MThd[4];
typedef uint32_t ChunckSize[4];
typedef uint16_t Format[2];
typedef uint16_t Track[2];
typedef uint16_t TimeDivision[2];
} MIDI_CHUNK_HEADER;
int main()
{
std::ifstream In_File("C:\\Users\\micah\\Documents\\Twinkle.mid", std::ios::binary | std::ios::in);
if (!In_File)
{
std::cerr << "Problem opening file!";
return 1;
}
MIDI_CHUNK_HEADER midi_chunk_header;
In_File.read((char*)&midi_chunk_header, sizeof(MIDI_CHUNK_HEADER));
std::cout << "File type is: "<< midi_chunk_header.**MThd** << std::endl;
std::cout << "Bytes to follow: " << midi_chunk_header.**ChunckSize** << std::endl;
std::cout << "MIDI Format: " << midi_chunk_header.**Format** << std::endl;
std::cout << "MIDI Track: " << midi_chunk_header.**Track** << std::endl;
std::cout << "MIDI Time Division: " << midi_chunk_header.**TimeDivision** << std::endl;
}
【问题讨论】: