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

 
 
> Ошибка "[Error Pe070] incomplet type is not allowed", Не могу сообразить почему IAR ругается.
mempfis_
сообщение Mar 24 2014, 08:29
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.
Пытаюсь добавить поддержку DHCP в проект Simple Webserver из IAR.
Скопировал файлы dhcpc.h и dhcp.c и файл dhcp.c добавил к проекту.
При компиляции IAR ругается на строки, где используется структура struct uip_eth_addr которая определена в файле uip.h как
Код
/**
* Representation of a 48-bit Ethernet address.
*/
struct  uip_eth_addr{
  u8_t addr[6];
};


Например кусок кода
Код
#ifndef __UIP_ARP_H__
#define __UIP_ARP_H__

#include "uip.h"

#if UIP_FIXEDETHADDR
extern const struct uip_eth_addr uip_ethaddr;
#else
extern struct uip_eth_addr uip_ethaddr;
#endif


/**
* The Ethernet header.
*/
struct uip_eth_hdr {
  struct uip_eth_addr dest; //Error[Pe070] incomplet type is not allowed
  struct uip_eth_addr src; //Error[Pe070] incomplet type is not allowed
  u16_t type;
};
#endif //__UIP_ARP_H__



В этом куске кода файл uip.h подключён директивой #include.
Т.е. теоретически код ниже должен свободно понимать что такое struct uip_eth_addr.
Практически выдаётся ошибка Pe070.
В чём я не прав? Или что я упускаю из виду?

Прилагаю также проект в IAR ARM 5.40
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
seneka
сообщение Mar 24 2014, 10:04
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 11-03-14
Из: Ростов
Пользователь №: 80 888



Вы только что описали причину проблемы "видимость". Посмотрел бегло заголовок uip.h там очень много #if или #ifdef
Скорее всего кто то из них делает Вашу структуру невидимой. Попробуйте поместить структуру в самый верх uip.h
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Mar 24 2014, 10:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(seneka @ Mar 24 2014, 14:04) *
Вы только что описали причину проблемы "видимость". Посмотрел бегло заголовок uip.h там очень много #if или #ifdef
Скорее всего кто то из них делает Вашу структуру невидимой. Попробуйте поместить структуру в самый верх uip.h


Ошибка всёравно остаётся даже если перенести описание структуры в самое начало файла uip.h.
Но она однозначно связана с видимостью определения. Если изменить название структуры uip_eth_addr, то ошибка остаётся всё той же.
В файле uip_arp.h не подключается файл uip.h. Попробую покопаться в проекте и разобраться почему так происходит.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 25 2014, 03:00
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Сделайте вывод препроцессора в листинг и посмотрите, что туда включается (какие определения/объявления).
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:45
Рейтинг@Mail.ru


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