Я начал работать со структурами, и мне сложно разбить их на файлы .h и .cpp. Я понимаю, что .h обычно используется для объявлений, а .cpp — для определений. Проблема, с которой я столкнулся, заключается в том, что я не могу понять, как определить стандартные переменные для двух отдельных структур, если эти переменные имеют одинаковые имена.
Я думаю, моя проблема в том, что три переменные для каждой структуры не связаны внутри них (ошибка 1). Я попытался извлечь эти переменные из файлов .cpp, но затем столкнулся с проблемой: переменные в void Reset() не были объявлены в этой области.
Что я такое попытка добиться наличия этих переменных в структуре со значениями по умолчанию. Функция Reset() при вызове сбрасывает эти значения.
Я запускаю из Konsole следующее: g++ -o main cpu.cpp main.cpp && . /main
Ошибка 1
/usr/bin/ld: /tmp/ccwb32XV.o:(.bss+0x3): multiple definition of `PS'; /tmp/ccY9ydGx.o:(.data+0x3): first defined here
collect2: error: ld returned 1 exit status
Ошибка 2
cpu.cpp:9:5: error: ‘PC’ was not declared in this scope
9 | PC = 0xFFFC;
cpu.h
#include
struct CPU
{
std::uint16_t PC;
std::uint8_t SP;
std::uint8_t PS;
void Reset();
};
cpu.cpp
#include "cpu.h"
std::uint16_t PC = 0x1234;
std::uint8_t SP = 0x56;
std::uint8_t PS = 0b10101010;
void Reset()
{
PC = 0xFFFC;
SP = 0xFF;
PS = 0b00010000;
}
ppu.h
#include
struct PPU
{
std::uint16_t X;
std::uint8_t Y;
std::uint8_t PS;
void Reset();
void PrintSomething();
};
ppu.cpp
#include
#include
#include "ppu.h"
std::uint16_t X = 0x1010;
std::uint8_t Y = 0x99;
std::uint8_t PS = 0b11001100;
void Reset()
{
PC = 0xAABC;
SP = 0x02;
PS = 0b00000110;
}
void PrintSomething()
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/793 ... th-structs