بسم الله الرحمن الرحيم
قبل 4 شهور من الآن كنت أتعلم على c++ فكنت أكتب كل شيئ أتعلمه بس بعد أربعة شهور صرت أعرف c++ و Qt :D
بس جبتلكم ملف قديم كنت كاتب فيه كيف اصنع دالة بها وسائط لا نهائية عموما من catch(...){} a تقدر تستنتج الن الدوال التي بها وسائط لا نهائية تحوي على ثلاثة نقاط داخل منطقة الوسائط ولكن كيف نلتقط هذه المتغيرات من هذه النقاط .
يجب عليك في بداية الأمر ان تصنع متغير من النوع va_list وهو بنوعه يتلقى جميع المعلومات في وسائط المتغير
بعد ذلك نستخدم va_start والتي تريد بدورها في وسيطها الأول va_list وفي وسيطها الثاني عدد الوسائط .
ثم لكي تنتقل الى الوسيط التالي ماعليك سوى استخدام va_arg وهي ايضا تريد وسيطين الأول به متغير من النوع va_list والآخر نوع المعلومة المرجعة
وبإمكانك استخدامها عدة مرات ملاحة: لا تتجاوز عدد المتغيرات المدخلة .
اذا ما انتهيت من العمل مع va_list استدعي va_end وتأخذ وسيطا واحدا وهو va_list اترككم مع المثال المنقول
#include <stdio.h>
#include <stdarg.h>
void PrintLines ( char* first, ...)
{
char* str;
va_list vl;
str=first;
va_start(vl,first);
do {
printf ("%s\n",str);
str=va_arg(vl,char*);
} while (str!=NULL);
va_end(vl);
}
int main ()
{
PrintLines ("First","Second","Third","Fourth",NULL);
return 0;
}والسلام عليكم ورحمة الله وبركاته
