Это определенно pythonic. То, что можно возвратить несколько значений из функции шаблон, который Вы имели бы на языке как C, где необходимо определить структуру для каждой комбинации типов, Вы возвращаетесь куда-нибудь.
Однако, если Вы достигаете точки, куда Вы возвращаете что-то сумасшедшее как 10 значений от единственной функции, необходимо серьезно рассмотреть связывание их в классе, потому что в той точке это становится громоздким.
Невероятно маловероятно, поскольку, как правило, вы не получаете все содержимое библиотеки, внедренное в ваш исполняемый файл.
Вы получаете только достаточно, чтобы удовлетворить все неопределенные символы. На самом деле это может быть лишь небольшая часть библиотеки. Библиотека обычно состоит из набора объектных файлов, из которых только те, которые требуются, связаны с вашим исполняемым файлом.
Например, если единственное, что вы вызывали в библиотеке времени выполнения C, было exit ()
, очень маловероятно, что в вашем исполняемом файле будет семейство функций printf ()
.
Если вы связались с объектными файлами напрямую, у вас может быть шанс, поскольку они будут включены независимо от того, используются ли или нет (если ваш компоновщик не умный).
Но даже это было бы титанической задачей, поскольку в исполняемом файле может отсутствовать информация о том, какие участки кода были взяты из конкретных объектных файлов. Это потенциально выполнимо, но, если есть другой способ, я бы сначала посмотрел на него.
Позвольте мне пояснить типичный процесс:
ao
, bo
], co
и действительно
содержат функции a ()
, b ()
, c ()
и d ()
соответственно. Они все добавлены в архив abcd.a
. b ()
вызывает c ()
. a ()
и b ()
, и вы компилируете ее, а затем связываете с библиотекой abcd.a
. 1251] Компоновщик перетаскивает ao
и bo
из библиотеки в ваш исполняемый файл, удовлетворяя потребность в a ()
и b ()
, но вводит потребность в c ()
, потому что b ()
нуждается в этом. co
из библиотеки в ваш исполняемый файл, удовлетворяющий потребность в c ()
. Теперь все неопределенные символы удовлетворены, исполняемый файл готов и очищен от пыли, вы можете запустить его, когда будете готовы. Ни на одном этапе этого процесса не было do
перетаскивалось в ваш исполняемый файл, так что у вас нет никакой надежды на его получение out.
Обновление: Re the "
Представьте, что у вас есть 10 книг на языке, который вы не понимаете, без обложек, титульных листов, номеров страниц и глав. Некоторые книги могут быть неполными. Все страницы перемешаны вместе, поэтому невозможно узнать, где находится начало и конец каждой книги. (Каждая страница является вызовом функции) Теперь попробуйте найти страницу 123 книги 5 (скажем, это упомянуто выше, функция Exit () ).
Что ж, ЭТО ВОЗМОЖНО ...
Похоже, вы просите декомпилятор. Такие инструменты сложно использовать (вероятно, невозможно для умеренно сложного C ++), и если есть какой-либо другой способ решения вашей проблемы, включая пару месяцев, чтобы переписать библиотеки, я бы рекомендовал этот курс действий.
Как pax отметил, что даже если вы действительно используете декомпилятор, вы получите только те библиотечные функции, которые вызывает исполняемый файл.