Мне нужен символ alias
как псевдоним для функции function
, как описано в this question, но для компилятора/компоновщика IAR. Я попытался ответы на GCC, но те не работают, очевидно:Псевдоним для функции C в IAR
// source code
void alias(void) __attribute__ ((alias ("function")));
Error[Pe130]: expected a "{" C:\project\test.c 61
void alias(void) asm("function");
Error[Pe065]: expected a ";" C:\project\test.c 61
#pragma weak alias=function
Error[e46]: Undefined external "alias" referred in ?ABS_ENTRY_MOD ()
// linker options:
-Dalias=function
Fatal Error[e163]: The command line symbol "function" in -Dalias=function is not defined.
Кто-нибудь знает, как я могу определить функцию псевдоним в IAR/XLink?
Немного фона: Я несу ответственность за модуль, который используется в нескольких проектах. Чтобы проверить его, я разработал тестовые примеры для инструмента testIDEA, которые проверяют утверждения в определенных точках прерывания. Однако некоторые общие функции имеют разные имена в разных проектах (например, функцию инициализации можно назвать init()
, init_mcu()
, startup()
и т. Д.), Поэтому каждый раз, когда мой модуль интегрируется в новый проект, мне приходится изменять свои тестовые примеры в соответствии с новыми имена функций. Вместо этого я хотел бы определить общий псевдоним (например, test_init()
) для любой функции init, так что мои тестовые примеры всегда могут устанавливать точку останова с использованием этого общего имени. Я ожидаю, что этот символ превратится в файл ELF, где его можно увидеть отладчиком.
Пробовал это? http://stackoverflow.com/a/25620087/2703418 – bzeaman
Является ли IAR для поддержки переполнения стека? Инструменты довольно дороги, поэтому я ожидаю, что есть какая-то поддержка и документация. Что говорит документация?Что вы не поняли? – Olaf
Как насчет #define функции? Например, для модуля foo будет 'test_foo.h' и #define INIT init; #define DO_STUFF do_specific_foo_stuff –