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

 
 
> уникальный идентификатор, как при помощи макросов сформировать уникальный идентификатор
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
Ответов
demiurg_spb
сообщение Mar 27 2009, 23:38
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



А для чего, простите, весь сыр-бор. Чтобы лишь автоматизировать инициализацию какого-либо программного модуля?
Если так, то Вы ребята далеко ушли от программирования на С. Что неужели трудно явно вызывать процедуру инициализации? А как быть с расстановкой очерёдности инициализации разных модулей? С простотой портирования? С наглядностью наконец? На мой взгляд происходит подмена понятия программирования. Извините, но хочется понять глубинный смысл сего явления. Ответ типа: мне удобно т.к. я догадался до такого "извращения" - не то, что хочется услышатьsmile.gif Я сторонник глубинного понимания языка программирования, а не фишек линкера и прочего инструментария, входящего в комплект поставки компилятора. Да это знать и понимать тоже нужно, но использовать так... Уж если считаете, что Вам стал жать С используйте С++ с его конструкторами и деструкторами, шаблонами и всем-всем остальным что Вам будет нужно. Так будет честнее. ИМХО.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 28 2009, 08:57
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(demiurg_spb @ Mar 28 2009, 01:38) *
А для чего, простите, весь сыр-бор. Чтобы лишь автоматизировать инициализацию какого-либо программного модуля?
Нет, периферии.
Цитата(demiurg_spb @ Mar 28 2009, 01:38) *
Если так, то Вы ребята далеко ушли от программирования на С. Что неужели трудно явно вызывать процедуру инициализации?
Трудно. На каждый вызов положить по ®call/ret и сохранение/восстановление контекста? Нафига? Если для этого есть специально разарботанный очень элегантный механизм.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 28 2009, 10:41
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Сергей Борщ @ Mar 28 2009, 11:57) *
Нет, периферии. ... Нафига? Если для этого есть специально разарботанный очень элегантный механизм.
Я вас прекрасно понимаю с точки зрения экономии ПЗУ, слабо с точки зрения повышения быстродействия. И совсем никак с моей личной точки зрения. Поясню. У меня обычно пользователю доступны режимы работы устройства (пусть это будет пресловутый UART), так после изменения настроек нужно вызвать процедуру инициализации повторно. Так если эта процедура у меня уже физически есть, то зачем мне всё это? Да есть такая периферия которая не отдаётся на откуп юзеру, так с ней можно и через static inline или __attribute__((always_inline)) "бороться". Хотя тут уже не принципиально как. Спасибо за ответ. Для меня тема исчерпана. Ваш метод имеет право на жизньsmile.gif
2 ARV: гляньте, тут тоже происходит формирование уникальных идентификаторов:
Код
#ifdef __cplusplus
    template<bool> struct CompileTimeError;
    template<> struct CompileTimeError<true> {};
#    define STATIC_ASSERT(expr)    (CompileTimeError<(expr) != 0>())
#else
#    define MY_JOIN_3_H(A,B,C)     A##B##C
#    define MY_JOIN_3(A,B,C)       MY_JOIN_3_H(A,B,C)
#    define STATIC_ASSERT_H(expr)  typedef int MY_JOIN_3(static_assert_,__LINE__,_h) [(expr) ? 1 : -1]
#    define STATIC_ASSERT(expr)    STATIC_ASSERT_H(expr)
#endif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   уникальный идентификатор   Mar 27 2009, 11:50
- - _Pasha   Цитата(ARV @ Mar 27 2009, 15:50) подскажи...   Mar 27 2009, 12:17
|- - ARV   Цитата(_Pasha @ Mar 27 2009, 15:17) Если ...   Mar 27 2009, 12:22
|- - solosh   Попробуйте для создания уникальных имен использова...   Mar 27 2009, 13:07
|- - ARV   Цитата(solosh @ Mar 27 2009, 16:07) Попро...   Mar 27 2009, 13:24
|- - solosh   Нужен еще один проход препроцессора. Вот как раз В...   Mar 27 2009, 14:16
||- - ARV   Цитата(solosh @ Mar 27 2009, 17:16) Нужен...   Mar 27 2009, 19:31
||- - ReAl   Цитата(ARV @ Mar 27 2009, 21:31) она искл...   Mar 27 2009, 19:45
|- - Petka   Цитата(ARV @ Mar 27 2009, 16:24) так вот ...   Mar 27 2009, 14:25
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 19:32
Рейтинг@Mail.ru


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