Главная arrow Программирование arrow ARM arrow IAR EW ARM: устранение ошибок компиляции Tuesday, November 21 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

IAR EW ARM: устранение ошибок компиляции Версия для печати
Написал microsin   
01.03.2009

На этой страничке решил собрать ошибки, возникающие при компиляции, линковке в IDE IAR Embedded Workbench for ARM и методы их устранения.

1. Error[Pe070]: incomplete type is not allowed ...

Ошибка произошла из-за того, что я вынес в отдельный файл pins.c определения составных переменных:

//[pio.h]  
/// Макрос вычисляет размер массива экземпляров Pin. Массив должен
///  быть локальным (например, не должен быть указателем) иначе
///  вычисление будет некорректным.
#define PIO_LISTSIZE(list)    (sizeof(list) / sizeof(Pin))
 
//[board.h]
/// Столбцы клавиатуры (входы).
#define PIN_KBMATRIX_COL_0   {1 << 0, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
#define PIN_KBMATRIX_COL_1   {1 << 1, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
#define PIN_KBMATRIX_COL_2   {1 << 2, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
#define PIN_KBMATRIX_COL_3   {1 << 3, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_INPUT, PIO_PULLUP}
#define PINS_KBMATRIX_COLS   PIN_KBMATRIX_COL_0, PIN_KBMATRIX_COL_1, PIN_KBMATRIX_COL_2, PIN_KBMATRIX_COL_3
 
//[pins.c]
#include "board.h"
const Pin pinsCol[] = {PINS_KBMATRIX_COLS};
 
//[pins.h]
extern const Pin pinsCol[];
 
//[main.c]
#include "pins.h"
#include <piopio.h>
...
//вот тут компилятор ругался на PIO_LISTSIZE - Error [Pe070]: incomplete type is not allowed
for (i=0; i < PIO_LISTSIZE(pinsCol); i++) {
...

Ошибка [Pe070] возникала потому, что макрос PIO_LISTSIZE не мог вычислить sizeof(list). Решение: в pins.h указать размер массива. Связано с неудобствами - нужно следить за синхронизировать pins.c и pins.h.

//[pins.h]
extern const Pin pinsCol[4]; 

[Ссылки]

1IAR EW ARM: устранение ошибок компиляции

Последнее обновление ( 10.04.2013 )
 

Комментарии  

  1. #1 kukuruku
    2013-04-1009:16:31 Спасибище! Очень помогли! На Вашем сайте нашел ответы более, чем на один вопрос.
    Ещё раз огромное спасибо!

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017