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

 
 
 
Reply to this topicStart new topic
> Инициализация статических и глобальных переменных в виде структур, Силами стартового кода си?
sonycman
сообщение Dec 11 2008, 13:06
Сообщение #1


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Можно ли как-то проинициализировать статическую структуру функции ненулевыми значениями? Глобальную переменную в виде структуры?
Чтобы присвоение значений происходило в c startup?

Ещё заметил, что для статических переменных в функциях генерируется "обёртка", которая обрабатывается при каждом заходе в такую функцию.
Почему нельзя было вынести инициализацию опять-же в c startup?
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 11 2008, 13:21
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А функция low_level_init не позволяет искомого? В документе Compiler Reference про нее должно быть описано.
Или я не понял вопроса. cranky.gif
Go to the top of the page
 
+Quote Post
msalov
сообщение Dec 11 2008, 13:34
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(sonycman @ Dec 11 2008, 15:06) *
Можно ли как-то проинициализировать статическую структуру функции ненулевыми значениями? Глобальную переменную в виде структуры?
Чтобы присвоение значений происходило в c startup?

Ещё заметил, что для статических переменных в функциях генерируется "обёртка", которая обрабатывается при каждом заходе в такую функцию.
Почему нельзя было вынести инициализацию опять-же в c startup?

Код
typedef struct {int a; char b; float c;} struct_t;
struct_t st = {1, 'a', 3.089};
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Dec 11 2008, 13:53
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(sonycman @ Dec 11 2008, 16:06) *
Ещё заметил, что для статических переменных в функциях генерируется "обёртка", которая обрабатывается при каждом заходе в такую функцию.
Почему нельзя было вынести инициализацию опять-же в c startup?


Это фича такая языка - статический член функции инициализируется при первом вызове, а не при старте программы. Правда для МК она не слишком полезная smile.gif
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 11 2008, 14:35
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Всё понял, большое спасибо за помощь!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 17:00
Рейтинг@Mail.ru


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