الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المعاملات # و @# و ## في ++C

مغلق
بدأه هاني الأتاسي في 8 يوليو 2001 · 1 رد · 2,380 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الأولى :

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

#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 ....

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

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

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

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

	return 0;
}

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

hani atassi

Coding on the Cloud and for the Cloud!

My Blog

#2

و الله الصراحة يا أخ هاني إنتهتبذل جهد رهيب لمساعدنا في فهم هذه اللغة التي أشبهها بالبحر ليس له آخر .

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

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

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

طبعا لكي لا يتهمني أحد إني أتفلسف عليكم الذي يريد معلومات أكثر عن المعامل ## الرجاء أن يذهب إلى MSDN .

هذا الموضوع مغلق.

مواضيع مشابهة