Вопрос

Да, я знаю, что "cdecl" - это название известного соглашения о вызовах, поэтому, пожалуйста, не объясняйте мне соглашения о вызовах.Я спрашиваю, что на самом деле означает аббревиатура (?) "cdecl".Я думаю, что это неудачный выбор названия, потому что на первый взгляд оно напоминает "C declarator" (довольно уникальный синтаксический аспект C).На самом деле, существует программа под названием cdecl единственной целью которого является расшифровка деклараторов языка Си.Но синтаксис декларатора C, насколько я могу судить, не имеет абсолютно ничего общего с соглашениями о вызовах.

Упрощенная версия:"stdcall" расшифровывается как "стандартное соглашение о вызове".Что означает "cdecl"?

Это было полезно?

Решение

Вы слишком много читаете в этом.Он стоит за призванной конвенцией о реализации для вызова функций C в общем (но особенно важно с варяргами).

Это не должно быть аббревиатурой для чего-то, что сочетает в себе «C» и «Декларацию»;Имена - это просто имена, особенно в программировании.Mnemonics Help, но, хотя «Malloc» означает «распределить память», он имеет дополнительное значение, которое мы знаем и прилагаем к нему;«ALLOCA» также «выделяет память», например.

или взять «структуру», который «означает« структуру », но« структура »настолько общего самого себя, что без смысла мы прикрепляем подсознание« структуру », мы были бы безнадежно потеряны - поскольку новые программисты все еще изучают терминологиючасто теряются.

Другие советы

Это происходит от функции C, которая была объявлена (в отличие от функции C, которая не была объявлена, что была обычной в K & R C).

в то время, когда он сосуществовал с Cascal Calling Convention (в то время как Callee очистил стек), поэтому оно имеет смысл назвать его после языка программирования.

Все, что вы могли бы захотеть узнать о вызове конвенций.

C декларация.Заявление, представленное/для C.

[править]

Я честно должен признать, что на самом деле не знаю, означает ли это то, что обозначается, хотя на самом деле оно введено /для C.Но с тех пор, как caller должен очистить выделенную память (в отличие от большинства других соглашений о вызовах).Это также может быть мнемоническим обозначением "Вызывающий абонент завершает очистку", что, я думаю, на самом деле является хорошим подспорьем для запоминания.:D

Обновлено Я полностью пересматривал это, после того, как комментарии указывают на то, насколько я не прав.cdecl означает, что эта функция использует такую же конвенцию о вызовах, которые используют функции C.extern "C" означает, кроме того, что имя функции не должно проходить генеракодицетагкод имя-поклонников.

Что касается того, почему он называется C++, я больше не знаю.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top