Есть, парни, у меня такая функция Код (C++): void SPI_ReadArray(uint8_t num, uint8_t *data) { while(num--) { *data++ = SPI_WriteByte(*data); } } и есть такая Код (C++): uint8_t Receive(uint8_t *rx_data) { uint8_t length; // тут многовнокода SPI_ReadArray(length, *rx_data); // Читаем данные // тут тоже многовнокода return length; } return 0; // Выходим с нулем, если длина сообщения не совпадает } и всё это мракобесие я хочу отыметь через структуру. Да вот незадача - как взять указатель на нее? Чтобы тупо написать Код (C++): Receive(my_struct_1); Объявить типа Код (C++): struct my_struct *my_struct_1; ? Но тогда к полям структуры придется обращаться через разыменование или стрелки. Может, есть способ попроще? И это - компилятор на замракожопит (через байт расположит в памяти для 8-ми биток?) поля структуры? На буфер вообще не хочу переходить.
Да, не сказал, вариант Код (C++): Receive(&my_struct_1); порождает у компилятора варнинг и мессагу Это жжжж не спроста...
Код (C++): #pragma pack(push,1) // выравнивание 1 байт struct TBufferData { public: uint8_t Length; uint8_t *Data; TBufferData(uint8_t length) { Data = new uint8_t[Length = length]; }; ~TBufferData() { delete[] Data; }; }; #pragma pack(pop) TBufferData MyData(32); void SPI_ReadArray(uint8_t num, uint8_t *data) { while (num--) { *data++ = SPI_WriteByte(*data); } } uint8_t Receive(TBufferData &rx_data) { uint8_t length = rx_data.Length; // тут многовнокода SPI_ReadArray(length, rx_data.Data); // Читаем данные // тут тоже многовнокода return length;// ??? нигде не меняеца } вызов: Receive(MyData);
про внутренности функций ничего не скажу, ты спрашивал только как структуру передать. Мог спьяну ашыбицца.
ну так бы и я написал и не задавал вопросов) Я же хочу именно uint8_t. указатель на структуру к uint или uint к структуре? религия)) Но, видимо, так и придется сделать. Я правильно понимаю, что запись uint8_t *rx_data аналогична uint8_t* rx_data? И такая запись говорит нам, что это указатель на переменную размерностью uint8_t, а сам указатель (двухбайтный адрес?) спрятан от наших глаз?
а вот это точно Си? Может, GO! ? Реально можно на сях в структуре организовать конструктор и деструктор?
Если указатель на структуру то доступ к элементу через -> Если структура, то доступ через точку. Вроде все однозначно
На сях не бывает ни конструкторов, ни деструкторов. На С++ - сколько угодно. struct от class в С++ отличается очень незначительно - это почти одно и тоже.