Что такое IAR-эквивалент '__attribute__ ((weak, alias (#f))) '?

Я использовал серию LPC (NXP) для управления чем-то. А сейчас мы переходим на другой MCU (Spansion) и компилятор с GNU на IAR. Некоторые атрибуты не совпадают между IAR и GNU, я хотел бы попросить о помощи:

В прошлом (GNU):

#define ALIAS(f) __attribute__((weak, alias (#f)));
#define CSV_IRQHandler(void)   ALIAS(IntDefaultHandler)

Что изменится, если компилятор изменится на IAR?

Если я использую тот же синтаксис, я получаю сообщение об ошибке:

Error[Pe130]: expected a "{"

Любое предложение будет оценено!


person Liu Scott    schedule 02.09.2014    source источник


Ответы (1)


Вы должны быть в состоянии использовать #pragma weak CSV_IRQHandler=IntDefaultHandler

Из "Руководства по разработке IAR C/C++"

weak

Syntax           #pragma weak symbol1={symbol2}

Parameters       symbol1 A function or variable with external linkage
                 symbol2 A defined function or variable.

Description      This pragma directive can be used in one of two ways:
                 ● To make the definition of a function or variable with external linkage a weak
                   definition. The __weak attribute can also be used for this purpose.
                 ● To create a weak alias for another function or variable. You can make more                
                   than one alias for the same function or variable.

 Example        To make the definition of foo a weak definition, write:

                #pragma weak foo

                To make NMI_Handler a weak alias for Default_Handler, write:

                #pragma weak NMI_Handler=Default_Handler

                If NMI_Handler is not defined elsewhere in the program, all references to 
                NMI_Handler will refer to Default_Handler.
person nos    schedule 02.09.2014