реклама на сайте
подробности

 
 
> Константы линкера LINK30 (для C30), Использование констант линкера в программе
Harvester
сообщение Aug 12 2009, 12:29
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Не может ли кто подсказать, как в программе на Си использовать константы,
определенные в сценарии линкера (*.gld)?

Скажем, в сценарии имеется такая строчка:
Код
__MY_BASE = 0x1700

Если я пишу в программе
Код
SPLIM = __MY_BASE;

то компилятор ругается на то, что идентификатор __MY_BASE не определён.
А при использовании ассемблерных вставок
Код
asm("mov #__MY_BASE,w0");
asm("mov w0,SPLIM");

все работает нормально.


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex B._
сообщение Aug 13 2009, 07:15
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(Harvester @ Aug 12 2009, 16:29) *
компилятор ругается на то, что идентификатор __MY_BASE не определён.

пишите _MY_BASE (с одним подчеркивание в начале).
Go to the top of the page
 
+Quote Post
Harvester
сообщение Aug 20 2009, 10:03
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Цитата(Alex B._ @ Aug 13 2009, 10:15) *
пишите _MY_BASE (с одним подчеркивание в начале).


Не, не получается, та же ошибка sad.gif
Кстати, это было первое, что мне предложили в техподдержке микрочипа.

Второе предложение от них - объявить данный идентификатор как extern - тоже не прошло.
В этом случае компилятор интерпретирует идентификатор как переменную, а не как константу.

Техподдержка думает дальше smile.gif


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
testerplus
сообщение Aug 20 2009, 13:25
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 7-08-08
Из: SPb
Пользователь №: 39 471



Нужно и "extern", и "одно подчеркивание":

Код
extern int _MY_BASE;
...
SPLIM = _MY_BASE;


Я сам этим пользовался.

Сообщение отредактировал testerplus - Aug 20 2009, 13:26
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016