У меня проблема со структурой при попытке сделать это в C ++ (Visual Studio):
memoria.cpp
struct readMem {
UINT32 startAdress;
UINT32 endAdress;
UINT8(*memoryHandler) (UINT32);
void *pUserData;
};
struct writeMem {
UINT32 startAdress;
UINT32 endAdress;
void (*memoryHandler) (UINT32, UINT8);
void *pUserData;
};
void memoria::writeRAMBankEnable(UINT32 a, UINT8 b) {
}
void memoria::writeROMBankSelect(UINT32 a, UINT8 b) {
}
void memoria::writeRAMROMModeSelect(UINT32 a, UINT8 b) {
}
void memoria::writeVRAM(UINT32 a, UINT8 b) {
}
void memoria::writeSRAM(UINT32 a, UINT8 b) {
}
void memoria::writeRAM(UINT32 a, UINT8 b) {
}
void memoria::writeERAM(UINT32 a, UINT8 b) {
}
void memoria::writeSprite(UINT32 a, UINT8 b) {
}
void memoria::writeIOM(UINT32 a, UINT8 b) {
}
void memoria::writeHRAM(UINT32 a, UINT8 b) {
}
struct writeMem implWriteMem[] = {
{ 0x0000, 0x1FFF, writeRAMBankEnable, NULL},
{ 0x4000, 0x5FFF, writeROMBankSelect, NULL},
{ 0x6000, 0x7FFF, writeRAMROMModeSelect, NULL},
{ 0x8000, 0x9FFF, writeVRAM, NULL},
{ 0xA000, 0xBFFF, writeSRAM, NULL},
{ 0xC000, 0xDFFF, writeRAM, NULL},
{ 0xE000, 0xFDFF, writeERAM, NULL},
{ 0xFE00, 0xFE9F, writeSprite, NULL},
{ 0xFF00, 0xFF7F, writeIOM, NULL},
{ 0xFF80, 0xFFFF, writeHRAM, NULL},
{ (UINT32) - 1, (UINT32) - 1, NULL, NULL}
};
memoria.h
#pragma once
#include <stdlib.h>
#include <stdio.h>
#include "defs.h"
ref class memoria
{
public:
memoria(void);
private:
FILE *file;
UINT8 *mem;
public:
void writeRAMBankEnable(UINT32, UINT8);
void writeROMBankSelect(UINT32, UINT8);
void writeRAMROMModeSelect(UINT32, UINT8);
void writeVRAM(UINT32, UINT8);
void writeSRAM(UINT32, UINT8);
void writeRAM(UINT32, UINT8);
void writeERAM(UINT32, UINT8);
void writeSprite(UINT32, UINT8);
void writeIOM(UINT32, UINT8);
void writeHRAM(UINT32, UINT8);
UINT8 readRAMBankEnable(UINT32);
UINT8 readROMBankSelect(UINT32);
UINT8 readRAMROMModeSelect(UINT32);
UINT8 readVRAM(UINT32);
UINT8 readSRAM(UINT32);
UINT8 readRAM(UINT32);
UINT8 readERAM(UINT32);
UINT8 readSprite(UINT32);
UINT8 readIOM(UINT32);
UINT8 readHRAM(UINT32);
void Meminitialize();
void MemcleanUp();
void writeByte(UINT32, UINT8);
UINT8 readByte(UINT32);
void writeWord(UINT32, UINT16);
UINT16 readWord(UINT32);
};
Visual Studio C ++ дает мне следующие ошибки:
1> memoria.cpp (75): ошибка C2065: «writeRAMBankEnable»: необъявленный идентификатор
1> memoria.cpp (76): ошибка C2065: «writeROMBankSelect»: необъявленный идентификатор
1> memoria.cpp (77): ошибка C2065: «writeRAMROMModeSelect»: необъявленный идентификатор
1> memoria.cpp (78): ошибка C2065: «writeVRAM»: необъявленный идентификатор
1> memoria.cpp (79): ошибка C2065: «writeSRAM»: необъявленный идентификатор
1> memoria.cpp (80): ошибка C2065: «writeRAM»: необъявленный идентификатор
1> memoria.cpp (81): ошибка C2065: «writeERAM»: необъявленный идентификатор
1> memoria.cpp (82): ошибка C2065: «writeSprite»: необъявленный идентификатор
1>memoria.cpp (83): ошибка C2065: «writeIOM»: необъявленный идентификатор
1> memoria.cpp (84): ошибка C2065: «writeHRAM»: необъявленный идентификатор
1> memoria.cpp (169): ошибка C2065: 'implReadMem': необъявленный идентификатор
1> memoria.cpp (179): ошибка C2065: 'implReadMem': необъявленный идентификатор
Для справки, я объявил все функции в моем memoria.h, конечно, все, кроме struct и implWriteMem [].Во всяком случае, как я могу решить это?
PS Это работало довольно хорошо в чистом C.
Спасибо!