powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / объясните разницу между cdecl и stdcall
6 сообщений из 6, страница 1 из 1
объясните разницу между cdecl и stdcall
    #39284579
FB Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот нашел статью, где вроде сравниваются эти два интерфейса
Using the cdecl and stdcall Interfaces
понял, что различаются заполнением стека параметрами и соответствнно извлечением параметров из стека. понятно, что интерфейсы у exe-шника и dll-ки должны совпадать. вопрос в том, что лучше применять при написании своего приложения, например, под Windows? есть ли разница под другими ОС?
...
Рейтинг: 0 / 0
объясните разницу между cdecl и stdcall
    #39284601
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB Programmerвопрос в том, что лучше применять при написании своего приложения, например, под Windows?
Для написания своего приложения лучше применять что-нибудь нормальное. Если нормальное вызывает затруднения, стоит использовать выбор компилятора по умолчанию - по крайней мере, не насажаешь лишних проблем.
...
Рейтинг: 0 / 0
объясните разницу между cdecl и stdcall
    #39284626
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB Programmer,

под x64 этого зоопарка больше нет


для win dll - делай как все - пиши WINAPI (__stdcall )
...
Рейтинг: 0 / 0
объясните разницу между cdecl и stdcall
    #39284691
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB Programmerвот нашел статью, где вроде сравниваются эти два интерфейса
Using the cdecl and stdcall Interfaces
понял, что различаются заполнением стека параметрами и соответствнно извлечением параметров из стека. понятно, что интерфейсы у exe-шника и dll-ки должны совпадать. вопрос в том, что лучше применять при написании своего приложения, например, под Windows? есть ли разница под другими ОС?
Нет понятия "интерфейсы у exe-шника и dll-ки". Есть вызывающая и вызываемая функции.

Читать про "Calling convention"
...
Рейтинг: 0 / 0
объясните разницу между cdecl и stdcall
    #39285122
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомбинирую вышеотписавшихся:
- для монолитного приложения - по умолчанию
- для собственных длл - по умолчанию
- для вин длл, которыми пользоваться будет кто-то еще - stdcall. В win32 принято, что библиотечные длл используют именно stdcall, чтобы их можно было использовать из других языков.
...
Рейтинг: 0 / 0
объясните разницу между cdecl и stdcall
    #39292942
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB Programmer,

cdecl: параметры функции убирает из stack-а тот, кто вызывает эту функцию. Это позволяет делать функции с переменным числом параметров (например, printf).

stdcall: функция сама убирает из stack-а свои параметры. Машинного кода в итоге получается чуть меньше, чем с cdecl, поэтому когда-то давно именно stdcall было выбрано почти для всех WinAPI-шных функций. Но в современной жизни это настолько несущественная экономия, что при написании своих функций, про stdcall можно забыть, и всегда использовать cdecl. Например, кросс-платформенная GUI-библиотека GTK+ (которая в Windows доступна как набор dll) использует cdecl:
gtkwindow.h
Код: plaintext
1.
GtkWidget* gtk_window_new                      (GtkWindowType        type);

Они даже не пишут в явном виде calling convention, потому что по умолчанию используется cdecl.

Ну и вопреки названию, stdcall не имеет никакого отношения к стандартам языков C/C++. Вряд ли оно где-то широко используется за пределами Windows.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / объясните разницу между cdecl и stdcall
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]