Re[2]: __stdcall в dll функциях
От: Erop Россия  
Дата: 09.10.12 09:02
Оценка:
Здравствуйте, okman, Вы писали:

O>Дело в том, что компилятор [VC++], чтобы отличать одну функцию от другой, — а C++ допускает

O>такую перегрузку, — хранит все имена в специальном внутреннем формате. Это называется декорацией
O>имен (name decoration или name mangling). Декорированное имя формируется в зависимости от имени функции,
O>от количества и типов ее аргументов, от типа соглашения о выховах (stdcall/cdecl/fastcall), а также от
O>того, используется ли C или C++.
O>Кое-какая полезная информация здесь — http://msdn.microsoft.com/en-us/library/deaxefa7(v=vs.100).aspx

Для extern "C" функции перегрузка недоступна, так что причина декорирования имён другая -- совместимость с тем, как это было принято делать в С.
А в С так принято было делать из соображений надёжности. Что бы тип декорирования имения, гарантировал тип соглашения о вызове...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.