vn821202 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Здравствуйте Все! Хотелось бы разобраться с использованием Linker-defined symbols в проекте Keil. http://www.keil.com/support/man/docs/armli...62065951495.htm Меня конкретно интересует возможность использования переменной Load$$LR$$load_region_name$$Length http://www.keil.com/support/man/docs/armli...62065953823.htm Почему при сборке проекта линковщик выдает ошибку, что символ не определен.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Берете и используете extern uint32_t * Load$$LR$$LR_IROM1$$Length; ... { uint32_t * r = Load$$LR$$LR_IROM1$$Length; } Видимо не те буквы используете, поэтому и не находит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vn821202 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Спасибо, действительно линкуется без ошибок. А эти переменные обязательно использовать через указатель? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Лень проверять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vn821202 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Для проверки использовал следующий код: /*---------------------------------------------------------------------------- Main Program *----------------------------------------------------------------------------*/ int main (void) { /* main entry for program */ uint32_t test[4]; extern uint32_t Load$$LR$$LR_IROM1$$Limit; extern uint32_t Load$$LR$$LR_IROM1$$Base; extern uint32_t Load$$LR$$LR_IROM1$$Length; ...... test[0] = (uint32_t)&Load$$LR$$LR_IROM1$$Limit; test[1] = (uint32_t)&Load$$LR$$LR_IROM1$$Base; test[2] = (uint32_t)&Load$$LR$$LR_IROM1$$Length; test[3] = test[0] - test[1]; .... } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба А результат проверки - какой? Здесь главное extern. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vn821202 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Все работает. Кроме extern необходимо использовать & 6.3.7 Methods of importing linker-defined symbols in C and C++ You can import linker-defined symbols into your C or C++ source code. They are external symbols and you must take the address of them. The only case where the & operator is not required is when the array declaration is used, for example extern char symbol_name[];. http://www.keil.com/support/man/docs/armli...62065956104.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться