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