IAR EW ARM: Error[Pe147]: declaration is incompatible...
Написал microsin   
08.04.2009

Долго не мог разобраться, почему возникала ошибка 
Error[Pe147]: declaration is incompatible with "TParams const __data папка_проекта\vars.c 22 paramDefault" (declared at line 22).

У меня была задана структура TParams как тип:
typedef __packed struct _Params
{
    u32 paramseed;
    u32 versionARM;
    ...
    u8 lblstate[15];
    u16 CRC;
} TParams;

Грешил даже на то, что структура назначалась как переменной, так и константе:   
TParams param;
const TParams paramDefault =
{
    0xAA55AA55,
    0x00000000,
    ...
    LABEL_DEFAULT,
    0x0000
};

Оказалось все проще (хотя сразу не разобрался потому, что компилятор не указывал на это место) - я просто забыл ключевое слово const в хедере, где предварительно объявлялись param и paramDefault. Было там так (это ошибочно):
extern TParams param;
extern TParams paramDefault;

А для исправления ошибки должно быть так:
extern TParams param;
extern const TParams paramDefault;