stdcall и cdecl — два распространенных соглашения о вызовах, используемые в программировании языки. У разработчиков часто возникают вопросы по поводу их функциональности и совместимости.
1. Ответственность за очистку стека
При вызове функции cdecl вызывающая сторона несет ответственность за очистку стека после возврата функции. Это связано с тем, что соглашение о вызовах cdecl указывает, что вызываемый объект (вызываемая функция) не очищает стек. Компилятор соответствующим образом генерирует код, зная соглашение о вызове функции.
2. Несовпадающие соглашения о вызовах
Как правило, для функции с одним соглашением о вызовах не составляет проблемы вызвать функцию с другим соглашением о вызовах. Например, функция stdcall может вызывать функцию cdecl и наоборот. Однако важно убедиться, что компилятор не выдает никаких ошибок, связанных с несовпадением соглашений о вызовах.
3. Вопросы производительности
Как правило, нет существенной разницы в производительности между соглашениями о вызовах stdcall и cdecl. Компилятор эффективно генерирует код для очистки стека и передачи параметров в зависимости от соглашения о вызовах.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3