Зачем использовать __stdcall для указателя на функцию

Я смотрел на некоторый код, подобный тому, что упоминался здесь: Указатели на функции для функций winapi (stdcall / cdecl), Указатель на функцию и соглашение о вызовах, и т.п.

Что нужно, выгода для объявления типа вызова указателя функции как __stdcall?

Зачем вообще объявлять вызывающий тип для указателя на функцию?

3

Решение

Внедрение спецификатора соглашения о вызове в указатель функции позволяет использовать это соглашение о вызове при вызове функций через этот указатель. __stdcall это соглашение о вызовах, используемое для вызова функций Win32 API.

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

Однако есть предостережение: если вы вставите неправильное соглашение о вызовах в указатель на функцию, компилятор может оказаться бессильным помочь вам обнаружить это, и вы можете в конечном итоге делать плохие вещи во время выполнения.

3

Другие решения


По вопросам рекламы [email protected]