реклама на сайте
подробности

 
 
> port definition for IAR C++, компилятор выдает предупреждения
prottoss
сообщение May 27 2006, 14:31
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Всем доброго времени суток!



Для написания программ для AVR всегда пользовал язык С, хотя С++ знаю, но как то применял для МК, на Си было попроще. Сейчас встала необходимость применять С++ ...В принципе, все компилируется и работает, но линкер сыпет предупреждениями типа:



Warning[w35]: There is more than one definition for the struct/union type with tag '__C1'; class/struct/union field names do not match: UCSRA_Bit0 vs DDRC_Bit0
struct __C1 /* Elements: 8, Bytes: 1 */
{
unsigned char UCSRA_Bit0 : 1 /* disp: 0 */;
unsigned char UCSRA_Bit1 : 1 /* disp: 1 */;
unsigned char UCSRA_Bit2 : 1 /* disp: 2 */;
unsigned char UCSRA_Bit3 : 1 /* disp: 3 */;
unsigned char UCSRA_Bit4 : 1 /* disp: 4 */;
unsigned char UCSRA_Bit5 : 1 /* disp: 5 */;
unsigned char UCSRA_Bit6 : 1 /* disp: 6 */;
unsigned char UCSRA_Bit7 : 1 /* disp: 7 */;
};


etc.



Я понимаю так, что определения бит одного порта, используемого мною, перекрывают определения бит другого порта, который я тоже использую в своей программе. Как избавиться от этих предупреждений? Я привык составлять прогрмму так, что бы не было никаких предупреждений)))...

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение May 27 2006, 14:48
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



приведен неполный код. То что вы привели по идее не должно быть причиной warning'a.

Ну и почему бы не воспользоваться typedef struct..., определить структуру с разбивкой на биты B0..B7, и пользоваться этим типом там где это требуется.

пример:

Код
typedef struct /* Elements: 8, Bytes: 1 */
{ unsigned char
     B0 : 1,
     B1 : 1,
     B2 : 1,
     B3 : 1,
     B4 : 1,
     B5 : 1,
     B6 : 1,
     B7 : 1;
} TMyStruct;

volatile static __no_init TMyStruct DDRA @ 0x1A;
volatile static __no_init TMyStruct UCSRA @ 0x0B;
...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016