C ไลบรารี - <stdarg.h>

stdarg.h ส่วนหัวกำหนดประเภทตัวแปร va_list และสามมาโครที่สามารถใช้เพื่อรับอาร์กิวเมนต์ในฟังก์ชันเมื่อไม่ทราบจำนวนอาร์กิวเมนต์เช่นจำนวนอาร์กิวเมนต์ตัวแปร

ฟังก์ชันของอาร์กิวเมนต์ตัวแปรถูกกำหนดด้วยจุดไข่ปลา (, ... ) ที่ส่วนท้ายของรายการพารามิเตอร์

ตัวแปรห้องสมุด

ต่อไปนี้เป็นประเภทตัวแปรที่กำหนดไว้ในส่วนหัว stdarg.h -

ซีเนียร์ ตัวแปรและคำอธิบาย
1

va_list

นี่คือประเภทที่เหมาะสำหรับการเก็บข้อมูลที่จำเป็นสำหรับมาโครทั้งสาม va_start(), va_arg() และ va_end().

แมโครไลบรารี

ต่อไปนี้เป็นมาโครที่กำหนดไว้ในส่วนหัว stdarg.h -

ซีเนียร์ มาโครและคำอธิบาย
1 เป็นโมฆะ va_start (va_list ap, last_arg)

มาโครนี้เริ่มต้น ap ตัวแปรที่จะใช้กับ va_arg และ va_endมาโคร last_arg เป็นอาร์กิวเมนต์คงที่สุดท้ายที่ทราบซึ่งถูกส่งผ่านไปยังฟังก์ชันนั่นคืออาร์กิวเมนต์ก่อนจุดไข่ปลา

2 พิมพ์ va_arg (va_list ap ประเภท)

มาโครนี้ดึงอาร์กิวเมนต์ถัดไปในรายการพารามิเตอร์ของฟังก์ชันที่มีประเภท type.

3 เป็นโมฆะ va_end (va_list ap)

มาโครนี้อนุญาตให้ใช้ฟังก์ชันที่มีอาร์กิวเมนต์ตัวแปรซึ่งใช้ va_startมาโครที่จะส่งคืน ถ้าva_end ไม่ได้ถูกเรียกก่อนกลับจากฟังก์ชันผลลัพธ์จะไม่ได้กำหนด