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

 
 
> уникальный идентификатор, как при помощи макросов сформировать уникальный идентификатор
ARV
сообщение Mar 27 2009, 11:50
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



собственно, вместо многократного повторения __attribute__ ((naked, section(".init7"))) для разных функций типа void foo(void) в разных файлах хочу сделать какой-то макрос, который сам бы это дело дописал перед каким-то автоматически сгенерированным идентификатором. в общем, пишем:
Код
initialize{тут код начальной инициализации}
а получаем фактически что-то типа
Код
__attribute__ ((naked, section(".init7"))) void _name120097553(void){nen код начальной инициализации}


подскажите, как сделать? ничего путнего не получается... проблема в формировании уникального идентификатора....


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Mar 27 2009, 12:17
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(ARV @ Mar 27 2009, 15:50) *
подскажите, как сделать?


Если в файле по одному иниту, их можно обозвать одинаково. smile.gif
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 27 2009, 12:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(_Pasha @ Mar 27 2009, 15:17) *
Если в файле по одному иниту, их можно обозвать одинаково. smile.gif

увы, низзя... если функцию не объявлять static - то компоновщик обнаруживает наличие одинаковых идентификаторов... а если объявить static - не действует __attribute__


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
solosh
сообщение Mar 27 2009, 13:07
Сообщение #4





Группа: Участник
Сообщений: 13
Регистрация: 23-10-04
Пользователь №: 968



Попробуйте для создания уникальных имен использовать макросы __LINE__ и __FILE__
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 27 2009, 13:24
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(solosh @ Mar 27 2009, 16:07) *
Попробуйте для создания уникальных имен использовать макросы __LINE__ и __FILE__

так вот же ж sad.gif их и пробовал... проблема в том, что как __LINE__ сконкатировать с символом? если я пишу так:
Код
#define initialize void init ## __LINE__ (void)
то вместо ожидаемого
Код
void init_234(void)
я получаю
Код
void init___LINE__(void)
что неприемлемо...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
solosh
сообщение Mar 27 2009, 14:16
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 23-10-04
Пользователь №: 968



Нужен еще один проход препроцессора.
Вот как раз Ваш случай:
http://electronix.ru/forum/index.php?s=&am...st&p=361393
Go to the top of the page
 
+Quote Post
ARV
сообщение Mar 27 2009, 19:31
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(solosh @ Mar 27 2009, 17:16) *
Нужен еще один проход препроцессора.
Вот как раз Ваш случай:
http://electronix.ru/forum/index.php?s=&am...st&p=361393

да, случай как раз мой. но почему-то когда я вручную писал static для инициализирующей функции, она исключалась уборщиком мусора (-Wl,-gc-sections -ffunction-sections)... наверное потому, что не было атрибута used?
спасибо за помощь!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 27 2009, 19:45
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(ARV @ Mar 27 2009, 21:31) *
она исключалась уборщиком мусора (-Wl,-gc-sections -ffunction-sections)... наверное потому, что не было атрибута used?
Да, именно поэтому.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   уникальный идентификатор   Mar 27 2009, 11:50
|- - Petka   Цитата(ARV @ Mar 27 2009, 16:24) так вот ...   Mar 27 2009, 14:25
- - demiurg_spb   А для чего, простите, весь сыр-бор. Чтобы лишь авт...   Mar 27 2009, 23:38
|- - Сергей Борщ   Цитата(demiurg_spb @ Mar 28 2009, 01:38) ...   Mar 28 2009, 08:57
||- - demiurg_spb   Цитата(Сергей Борщ @ Mar 28 2009, 11:57) ...   Mar 28 2009, 10:41
|- - ReAl   Цитата(demiurg_spb @ Mar 28 2009, 01:38) ...   Mar 28 2009, 16:50
|- - demiurg_spb   ReAl, искреннее Вам спасибо! Всё разложили по ...   Mar 28 2009, 18:54
|- - ReAl   Цитата(demiurg_spb @ Mar 28 2009, 20:54) ...   Mar 28 2009, 20:56
|- - ARV   Цитата(ReAl @ Mar 29 2009, 00:56) И отдел...   Mar 30 2009, 05:02
||- - ReAl   Цитата(ARV @ Mar 30 2009, 08:02) дык в до...   Mar 30 2009, 13:05
|- - _Pasha   Цитата(ReAl @ Mar 28 2009, 23:56) Да, с i...   Mar 30 2009, 06:24
- - ARV   2 demiurg_spb: спасибо, уже не надо, тем более, чт...   Mar 28 2009, 13:14
- - demiurg_spb   Да тут есть свой прикол. Я даже использую это в та...   Mar 28 2009, 13:43
- - _Pasha   Цитата(demiurg_spb @ Mar 28 2009, 17:43) ...   Mar 28 2009, 14:12
- - KRS   Цитата(demiurg_spb @ Mar 28 2009, 17:43) ...   Mar 30 2009, 22:19


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:20
Рейтинг@Mail.ru


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