نطاقات
المتغيرات
أفعال

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
(ماكرو دالة) [edit]
تأتي بنسخة من معطيات دالة variadic
(ماكرو دالة) [edit]
تنهي التعامل مع معطيات دالة variadic
(ماكرو دالة) [edit]
تحمل المعلومات اللازمة لعمل va_start و va_arg و va_end و va_copy
(معرف بـ typedef) [edit]