المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : المعاملات # و @# و ## في ++c


عبد الله الساهر
Oct 2005, 06:21 AM
من ضخامة لغة ال ++C فإنك تقريبا تجد كل يوم شئ جديد ! فهل استخدم أحدكم من قبل معاملات المترجم ##, #, @# ..

الأولى :
وهي ## وتسمى أحيانا بمعامل الربط وهي تخبر المترجم بان تصل الToken الذي يليها بال Token الذي قبلها .. انظر إلى الكود التالي :


#define CONCAT(a, a##b

int main(int argc, char* argv[])
{
int CONCAT(test, 1) = 50;
printf("%dn", test1);

return 0;
}

في الكود السابق تلاحظ تعريف الماكرو CONCAT الذي يقوم بوصل ما يكتب في كل من بارامتراته a و b إذن فإن نتيجة الماكرو
CONCAT(test, 1)
تكون test1 ....

أما الثانية والثالثة فهما قريبان من بعضهما وهما يستخدطان حصرا في الماكرو ، بالنسبة ل @# فإذا ذكرت بعد البارامتر فإنها تستبدله بمحرف .. أما الثانية يعني # قتستبدل البارامتر ب سلسلة نصية ..

انظر إلى المثال التالي وسوف تفهم أكثر :


#define WriteLn(x) printf(#x "n");

int main(int argc, char* argv[])
{
WriteLn(abdullah essaher);

return 0;
}


طبعا الكود السابق يطبع العبارة

abdullah essaher

وانتظروني بباقي الدروس

صمت الجمال
Oct 2005, 10:07 PM
طبعا الكود السابق يطبع العبارة

abdullah essaher

وانتظروني بباقي الدروس



واضيف عليه

#define WriteLn(x) printf(#x "n");

int main(int argc, char* argv[])
{
WriteLn(teacher...abdullah essaher);

return 0;
}


حتي يطبع لنا الاستاذ عبدالله الساهر

عبد الله الساهر
Nov 2005, 03:48 PM
والله احرجتيني صمت يعطيك العافية

اختي


ربي يوفقك

أمـ جود ـ
Nov 2005, 09:37 PM
الله يخليك عبادي والله انك ماقصرت

عبد الله الساهر
Dec 2005, 06:50 AM
اتمنى الفائدة لكم