Код
class OZK: public dev
{
public:
....
uint8_t no_of_devs;
void initialize(const uint8_t *mass);
....
};
есть функция initialize() которой нужно передать некоторые количество значений(адресса входов).
я создаю массив и пытаюсь передать на него указатель в функцию initialize().
Код
[code]
const uint8_t massiv_1[2]=
{
100,
200,
};
const uint8_t massiv_1[2]=
{
100,
200,
};
вот сам код того как я передаю значения в обьект
Код
...
Object_1.initialize(massiv_1);
Object_1.no_of_devs=5;
...
Object_1.initialize(massiv_1);
Object_1.no_of_devs=5;
...
В оригинале, massiv_1 содержит адреса входов, с которыми будет работать создаваемый обьект, но проблема в том что я изначально незнаю сколько должно быть входов и сколько должно быть обьектов. В ситуации когда есть только 1 обьект, я решал эту проблему задавая требуемое количество входов и адреса входов с помощью команд препроцессора(#define #if #elif и тд).
Был .H файл, где я задавал конфигурацию обьекта
Код
#define No_of_devs 6 //Количество входов устройства
#define Addr_1 100 //Адреса входов
#define Addr_2 200
и тд....
#define Addr_1 100 //Адреса входов
#define Addr_2 200
и тд....
ну и соответственно в описание обьекта я писал
Код
#if No_of_devs == 1
Object_Addr[1] = Addr_1
#elif No_of_devs == 2
Object_Addr[1] = Addr_1
Object_Addr[2] = Addr_2
....и тд.....
Object_Addr[1] = Addr_1
#elif No_of_devs == 2
Object_Addr[1] = Addr_1
Object_Addr[2] = Addr_2
....и тд.....
Таким образом я добился того, что я в одном файле ПОЛНОСТЬЮ описую конфигурацию 1го моего обьекта, и нигде больше ничего не трогаю....
Но когда мне нужно создать несколько обьектов(2 и более), то такой способ уже не подходит, т.е. все создаваемые обьекты, будут имет одинаковую конфигурацию.
Чтоб решить эту проблему я создаю таблицы и адреса этих таблиц передаю в создаваемый обьект.
Но проблема в том что код не хочет компилироватся....
компилятор выдает ошибку
Код
from Devs.cpp:4:
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here
In file included from Devs.cpp:11:
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here
In file included from Devs.cpp:11:
OZK_config.h:54: error: redefinition of `const uint8_t massiv_1[2]'
OZK_config.h:54: error: `const uint8_t massiv_1[2]' previously defined here
использую WinAVR - 20050214
Возможно такой способ передачи совершенно неправилый, и только из-за эого у меня ничего и не работает.
Прошу прощения за кучу вероятно лишней информации, но мой вопрос вероятно сводится к тому, как передать масив данных в обьект???
З.Ы. Книжки читал и делал как написано в примерах, но видимо не очень помогло....
З.Ы.Ы. прошу прощения если не очень ясно выражаю свои мысли!