المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: المعاملات # و @# و ## في ++C
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي C و ++C و C++.NET > أرشيف منتدى قسم السي ++
هاني الأتاسي
من ضخامة لغة ال ++C فإنك تقريبا تجد كل يوم شئ جديد ! فهل استخدم أحدكم من قبل معاملات المترجم ##, #, @# ..

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

#define CONCAT( a, B ) 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 ....

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

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

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

int main(int argc, char* argv[])
{
WriteLn(hani atassi);

return 0;
}



طبعا الكود السابق يطبع العبارة
hani atassi
Smart Star
و الله الصراحة يا أخ هاني إنتهتبذل جهد رهيب لمساعدنا في فهم هذه اللغة التي أشبهها بالبحر ليس له آخر .

أما المعامل # فيمكن أن يتعرف عليه القارئ لكتب سي .

لكن المصيببة الكبرى في المعامل ## . حيث لم أكن أعرفه إلا بعد مضيي مشوار في برمجة ويندوز في أحد المواضيع القديمة التي تشرح الفكرة القائمة عليها برمجة COM و لمزيد من المعلموت إسم الكتاب Inside Visual C++ 4

على فكرة هذا المعامل ليس ميزة جديدة في لغة سي++ بل هو موجود أصلا في لغة سي القديمة (بس هية صراحة متجدده دائما ) يعني بالعربي نحن الآن بننفض الغبار عن المعامل هذا

طبعا لكي لا يتهمني أحد إني أتفلسف عليكم الذي يريد معلومات أكثر عن المعامل ## الرجاء أن يذهب إلى MSDN .
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.