Theo như tôi biết, với C ...
chức năng gọi đẩy đối số vào stack theo thứ tự từ phải sang trái.
người gọi chịu trách nhiệm xóa các đối số khỏi ngăn xếp sau khi hàm được gọi đã được thực thi. Điều này có lẽ chính xác bởi vì người gọi được đảm bảo để biết có bao nhiêu đối số được đặt trên ngăn xếp, trong khi hàm được gọi có thể làm cho nó sai.
P.S .:ước Calling thường thực hiện cụ thể. Những gì tôi vừa mô tả được gọi là quy ước gọi là "cdecl". Ngược lại điều này với một quy ước gọi thường được gọi là "stdcall", trong đó hàm được gọi có trách nhiệm loại bỏ các đối số của nó khỏi ngăn xếp. Do đó, nó không hỗ trợ các danh sách đối số có độ dài thay đổi.
P.P.S .: Như dùng nategoose nhận xét, tôi không đề cập đến cách biến danh sách đối số thực sự sử dụng. Xem ví dụ số POSIX documentation for the <stdarg.h>
header để biết thêm thông tin.
Theo như tôi biết, các hàm varargs phụ thuộc vào việc triển khai thực hiện. – WhirlWind