Повикване конвенции

Подробности за това как на обаждащия се.

Обадете споразумение определи как обаждащия се взаимодейства с процедурите в разговора. Те определят правилата за това как параметрите са поставени в стека като обратна стойност, а когато топчето се изчиства. Тази информация е полезна, когато общуват с код, написани на други езици, особено за асемблер. В някои случаи, Конвенцията на разговори се използва и като имена процедура за регистрация.

FreeBASIC поддържа 3 конвенция: stdcall. cdecl и Паскал. дефинирана с stdcall. cdecl и Паскал. съответно. Наречен конвенция може да бъде посочен в процедурите за деклариране или дефиниция веднага след името на процедурата. В процедурата за деклариране трябва да бъде същата конвенция, както на Конвенцията и в дефиницията.

stdcall обажда конвенция по подразбиране в Windows, така и за процедури с блокове ученик "Windows" и ученик "Windows-жа". Това е конвенция по подразбиране се използва също и в приложния програмен интерфейс на Windows.


  • На DOS и Windows платформи, името на процедурата, е направено с наставка "@N", където N е общият размер в байтове на всички параметри.


спогодба cdecl. Настройки на процедури в стека преди извикването на обратната процедура, а не това, което те са декларирани, тоест, от дясно на ляво. Отсрещната страна е отговорна за бутане на параметрите в стека.

подразбиране cdecl конвенция призовава за Linux, BSD * и DOS, така и за процедури с блокове ученик "C" и ученик "C ++". Така е тази конвенция по подразбиране за C и C ++ компилатори.

паскал е конвенция по подразбиране за Pascal и поредица от Microsoft QuickBasic компилатори.

Следващата таблица показва разликите между конвенции:

Параметрите са поставени в стека на повикване