|
уникальный идентификатор, как при помощи макросов сформировать уникальный идентификатор |
|
|
|
Mar 27 2009, 11:50
|

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

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

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

|
Цитата(_Pasha @ Mar 27 2009, 15:17)  Если в файле по одному иниту, их можно обозвать одинаково.  увы, низзя... если функцию не объявлять static - то компоновщик обнаруживает наличие одинаковых идентификаторов... а если объявить static - не действует __attribute__
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Mar 27 2009, 13:07
|
Группа: Участник
Сообщений: 13
Регистрация: 23-10-04
Пользователь №: 968

|
Попробуйте для создания уникальных имен использовать макросы __LINE__ и __FILE__
|
|
|
|
|
Mar 27 2009, 13:24
|

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

|
Цитата(solosh @ Mar 27 2009, 16:07)  Попробуйте для создания уникальных имен использовать макросы __LINE__ и __FILE__ так вот же ж  их и пробовал... проблема в том, что как __LINE__ сконкатировать с символом? если я пишу так: Код #define initialize void init ## __LINE__ (void) то вместо ожидаемого Код void init_234(void) я получаю Код void init___LINE__(void) что неприемлемо...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Mar 27 2009, 19:31
|

Профессионал
    
Группа: Свой
Сообщений: 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? спасибо за помощь!
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|