Я начал работать со структурами, и мне сложно разбить их на файлы .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
Множественные определения переменных со структурами ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1736549153
Anonymous
Я начал работать со структурами, и мне сложно разбить их на файлы .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
Подробнее здесь: [url]https://stackoverflow.com/questions/79346973/multiple-definitions-of-variables-with-structs[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия