va_start
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <stdarg.h>
|
||
void va_start( va_list ap, parmN ); |
||
الماكرو va_start تتيح استخدام المعطيات التي تتبع المعطى المسمى parmN
يجب استدعاء va_start بكائن من النوع va_list قبل استدعاء va_arg.
يكون السلوك غير معرف إذا كان parmN معرفا كـregister أو كمصفوفة أو كدالة أو كنوع غير متكافئ مع اشتراطات المعطيات الـVariadic.
المعطيات
| ap | - | كائن من نوع va_list |
| parmN | - | آخر معطى مسمى في الدالة |
القيمة التي يؤول إليها الماكرو
(لا شيء)
مثال
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <stdarg.h>
int add_nums(int count, ...)
{
int result = 0;
va_list args;
va_start(args, count);
for (int i = 0; i < count; ++i) {
result += va_arg(args, int);
}
va_end(args);
return result;
}
int main(void)
{
printf("%d\n", add_nums(4, 25, 25, 50, 50));
}
خرج ممكن:
150
أنظر أيضا
| تأتي بالمعطى التالي لدالة variadic (ماكرو دالة) | |
(C99) |
تأتي بنسخة من معطيات دالة variadic (ماكرو دالة) |
| تنهي التعامل مع معطيات دالة variadic (ماكرو دالة) | |
| تحمل المعلومات اللازمة لعمل va_start و va_arg و va_end و va_copy (معرف بـ typedef) | |
مقالة مرجع C++ عن va_start
| |