ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 июля
1198650 Топик полностью
Argon (11.04.2022 10:59 - 11:04, просмотров: 273) ответил Tyмблep на Не совсем понял про замысел
Еще раз уточню про замысел: оно не случайно совпало, именно так и задумано. Есть несколько сущностей, которые имеют одинаковый набор структур с одинаковым назначением, но разным набором данных. Вот эти структуры и имеют одинаковые имена, ибо логично и некоторая защита от ошибок в будущем. 

Каждая из этих сущностей - отдельное электронное устройство, имеющее свой проект. В проекте "головного" устройства все эти сущности объединяются в виде подключения хедеров со структурами (одноименными).

Если я буду в каждом проекте выдумывать собственные имена для структур, то по сути это будет то же самое, что и namespace в проекте головного устройства, но ближе к говнокоду. Использование namespace проще и прозрачнее. Просто я посетовал, что using namespace использовать не могу. Без using - могу, но писанины чуть больше.

Выглядит в проекте головного устройства примерно так (вырезка из описания класса одной из сущностей по имени PowerUnit):

namespace PowerUnitNamespace {
#include <modules/powerunit.h>   // это подключение хедера с определением структур. powerunit.h берется прямо из проекта модуля, написанного на C
}



class PowerUnit : public Module {

//	using namespace PowerUnitNamespace;

public:
	PowerUnit(uint8_t addr) {
		type = PWRUNIT;
		address = addr;
	};

//Класс PowerUnit содержит в себе вот эти структуры

	PowerUnitNamespace::NonvolatileDataFolder_t nvDataFolder, nvDataInFolder;
	PowerUnitNamespace::SensorsFolder_t sensorsFolder;
	PowerUnitNamespace::FirmwareFolder_t firmwareFolder;
	PowerUnitNamespace::ControlFolder_t controlFolder;
	PowerUnitNamespace::ModuleCommandFolder_t moduleCommandFolder;
//соответсвенно, классы других устройств/модулей содержат структуры с этими же именами, но разделенными пространством имен, например DeviceType::SensorsFolder_t sensorsFolder;