Re[3]: Зарегестрировать функции до вызова main
От: Erop Россия  
Дата: 10.02.14 20:34
Оценка:
Здравствуйте, Desert Dragon, Вы писали:


DD>Линкер VS правда все равно выкидывает ForceLinkVariable.

DD>Вот так только сработало:
DD>
// препятствуем тому, чтобы линкер выкинул её за ненадобностью:
DD>// адрес переменной является параметром шаблона
DD>template< int* adr > struct ForceLinkVariable { int* link = adr; };


У VS есть, вроде как такая фича -- совмещать бинарные блоки, отличающиеся только своим адресом, в один и тот же.
Так что, если в формальном примере, не было никаких отличий между разными инстанциациями метода, то линкер вполне логично мог оставить тока одну...
Если сделать реальный односвязный список, с саморегистрацией элементов в конструкторах нод, то, скорее всего, само собой не выкинется....
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.