Re[2]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 14:44
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Здравствуйте, minorlogic, Вы писали:


M>>Необходимо зарегестрировать имена большого к-ва функций которые НЕ вызываются для регистрации и до вызова main.

M>>В каждой из функций уже есть макрос в который мы можем добавить что угодно.

M>>Ваши идеи ? спасибо!


MTD>Первой строкой в main вызвать код, который зарегистрирует функции чем не устраивает?


не устраивает по условию задачи. А на практике , код main нельзя модифицировать.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[8]: Зарегестрировать функции до вызова main
От: Pavel Dvorkin Россия  
Дата: 09.02.14 14:45
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Хорошо. Спасибо, что очень помог и ему и мне.


Сомневаюсь, что тебе это помогло... А что касается его — дождемся его ответа.
With best regards
Pavel Dvorkin
Re[3]: Зарегестрировать функции до вызова main
От: niXman Ниоткуда https://github.com/niXman
Дата: 09.02.14 14:45
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Имелось в виду записать ее имя (параметры) в внешнем хранилище.

LD_PRELOAD
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 14:45
Оценка:
Здравствуйте, anuniquename, Вы писали:


A>Непонятная задача, (большое к-во функций) * (В каждой есть макрос в который мы можем добавить что угодно) надо зарегистрировать (где, в паспортом столе?)


Например заригестрировать имена функций во внешнем хранилище , некий API
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Зарегестрировать функции до вызова main
От: MTD https://github.com/mtrempoltsev
Дата: 09.02.14 14:45
Оценка: +1 -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Предложи свой способ вызвать некую функцию до main (хоть с рефакторингом, хоть с чем угодно) — тогда и поговорим. Пока что от тебя я вижу только совет, который годится не для minorlogic, а для некоего школьника, впервые узнавшего про язык C.


Мы не задачки из школьного учебника решаем — для вызова, чего либо до main нужны очень серьезные основания. Пока я не понял зачем это нужно, поэтому банальный совет — избегать глобальных и статических типов, делать порядок инициализации явным.
Re[4]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 14:46
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, minorlogic, Вы писали:


M>>Имелось в виду записать ее имя (параметры) в внешнем хранилище.

X>LD_PRELOAD

Это не по стандарту и непереносимо
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[9]: Зарегестрировать функции до вызова main
От: MTD https://github.com/mtrempoltsev
Дата: 09.02.14 14:48
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Сомневаюсь, что тебе это помогло...


Помогло, помогло. Мы тут друг-другу помогаем. Ты мне про ТС рассказал, я тебе про то, что статические объекты до main создаются — оба стали знать чуть больше
Re[5]: Зарегестрировать функции до вызова main
От: Pavel Dvorkin Россия  
Дата: 09.02.14 14:48
Оценка:
Здравствуйте, MTD, Вы писали:


MTD>Мы не задачки из школьного учебника решаем — для вызова, чего либо до main нужны очень серьезные основания.


http://rsdn.ru/forum/cpp/5463100.1
Автор: minorlogic
Дата: 09.02.14


>Пока я не понял зачем это нужно, поэтому банальный совет — избегать глобальных и статических типов, делать порядок инициализации явным.


Прежде чем давать банальные советы, стоит все же поинтересоваться, кому их даешь.
With best regards
Pavel Dvorkin
Re[6]: Зарегестрировать функции до вызова main
От: MTD https://github.com/mtrempoltsev
Дата: 09.02.14 14:50
Оценка: -1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Прежде чем давать банальные советы, стоит все же поинтересоваться, кому их даешь.


Хорошо. Оставь, пожалуйста, номер телефона — я впредь перед тем как что-то написать, с тобой посоветуюсь стоит ли.
Re[10]: Зарегестрировать функции до вызова main
От: Pavel Dvorkin Россия  
Дата: 09.02.14 15:01
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Помогло, помогло. Мы тут друг-другу помогаем. Ты мне про ТС рассказал, я тебе про то, что статические объекты до main создаются — оба стали знать чуть больше


Спасибо большое. Будет к тому же неплохо, если ты разберешься с тем, что статические объекты, описанные внутри функции , создаются при первом входе в функцию, а статические объекты, описанные вне функций, есть те же глобальные объекты, область видимости которых при компиляции ограничена файлом.
With best regards
Pavel Dvorkin
Re[11]: Зарегестрировать функции до вызова main
От: MTD https://github.com/mtrempoltsev
Дата: 09.02.14 15:26
Оценка: -1
Здравствуйте, Pavel Dvorkin, Вы писали:

MTD>>Помогло, помогло. Мы тут друг-другу помогаем. Ты мне про ТС рассказал, я тебе про то, что статические объекты до main создаются — оба стали знать чуть больше


PD>Спасибо большое.


Не за что.

PD>Будет к тому же неплохо, если ты разберешься с тем, что статические объекты, описанные внутри функции , создаются при первом входе в функцию, а статические объекты, описанные вне функций, есть те же глобальные объекты, область видимости которых при компиляции ограничена файлом.


Молодец, книжку открыл, еще почитай про статические объекты классов, не повредит.
Re[3]: Зарегестрировать функции до вызова main
От: anuniquename Россия  
Дата: 09.02.14 15:31
Оценка: +1
Здравствуйте, minorlogic, Вы писали:

A>>Непонятная задача, (большое к-во функций) * (В каждой есть макрос в который мы можем добавить что угодно) надо зарегистрировать (где, в паспортом столе?)


M>Например заригестрировать имена функций во внешнем хранилище , некий API


Переименуйте имеющийся main в oldmain, напишите свой main, зарегистрируйте в нем что вам нужно, потом вызывайте "oldmain"
Re[12]: Зарегестрировать функции до вызова main
От: Pavel Dvorkin Россия  
Дата: 09.02.14 15:50
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Молодец, книжку открыл, еще почитай про статические объекты классов, не повредит.


Читать книги, безусловно, полезно. Хотя бы для того, чтобы знать, что у классов есть поля и методы (в том числе статические), а не объекты. Что же касается статических полей классов — то это фактически глобальные переменные, приписанные к классу.
With best regards
Pavel Dvorkin
Re[2]: в добавление
От: Pavel Dvorkin Россия  
Дата: 09.02.14 16:03
Оценка:
Вот, кстати, как это делается в Borland C++ Builder. Сохранили они этот механизм со времен BC++ 3.1 (если не раньше).

http://docwiki.embarcadero.com/RADStudio/XE3/en/Pragma_exit_and_pragma_startup
With best regards
Pavel Dvorkin
Re[13]: Зарегестрировать функции до вызова main
От: MTD https://github.com/mtrempoltsev
Дата: 09.02.14 16:09
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Читать книги, безусловно, полезно. Хотя бы для того, чтобы знать, что у классов есть поля и методы (в том числе статические), а не объекты. Что же касается статических полей классов — то это фактически глобальные переменные, приписанные к классу.


Отлично! Почти все фигуры выучили, скоро будем учится играть
Re[3]: в добавление
От: Ops Россия  
Дата: 09.02.14 17:11
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вот, кстати, как это делается в Borland C++ Builder. Сохранили они этот механизм со времен BC++ 3.1 (если не раньше).


PD>http://docwiki.embarcadero.com/RADStudio/XE3/en/Pragma_exit_and_pragma_startup


В MSVC есть такой костыль
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Зарегестрировать функции до вызова main
От: enji  
Дата: 09.02.14 17:34
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Задача следующая.


M>Необходимо зарегестрировать имена большого к-ва функций которые НЕ вызываются для регистрации и до вызова main.

M>В каждой из функций уже есть макрос в который мы можем добавить что угодно.

M>Ваши идеи ? спасибо!



#define INIT \
  namespace { struct Init##__LINE__ { \
    Init##__LINE__(); \
  }; }\
  Init##__LINE__::Init##__LINE__()

void func1();

INIT {
GlobalStorage::register(func1);
}
Re[4]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 21:35
Оценка:
Здравствуйте, anuniquename, Вы писали:


A>Переименуйте имеющийся main в oldmain, напишите свой main, зарегистрируйте в нем что вам нужно, потом вызывайте "oldmain"


Меня интересует решение изначальной задачи.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 21:35
Оценка:
Не понял как это будет работать , можно код целиком с main ? спасибо
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[12]: Зарегестрировать функции до вызова main
От: minorlogic Украина  
Дата: 09.02.14 21:40
Оценка: -1
Здравствуйте, MTD, Вы писали:

PD>>Будет к тому же неплохо, если ты разберешься с тем, что статические объекты, описанные внутри функции , создаются при первом входе в функцию, а статические объекты, описанные вне функций, есть те же глобальные объекты, область видимости которых при компиляции ограничена файлом.


MTD>Молодец, книжку открыл, еще почитай про статические объекты классов, не повредит.


Тоже пока не помогли , создаются при первом создании экземпляра класса.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.