يقول حكما ء الـ++C دوماً :
عليكم بوثائق اللغة ..
وعملاً بنصيحة الـC++ers :) فيجب أن تقرأ من وثائق اللغة كلما واجهتك مشكلة .. وعندما تألف هذه الوثائق اقرأها من البداية للنهاية .. وستكتشف أنك لم تكن تعلم شيئاً :)
في هذه المشاركة أرغب في مشاركة بعض المعلومات التي قرأتها , بهدف فتح شهية السنافر لأكل التوت
لن أعلق على الأكواد .. وسأترك لكم اكتشافها ..(أو العودة للوثائق)
اقرأ الكود التالي بعناية .. ثم توقّع المخرجات
int main()
{
#define iF(a) if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)
#define If(a) iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)
#define IF(a) If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)
int a=0;
IF(a)
printf("Finally O.K.\n");
return 0;
}أو هذا:int main()
{
#define if(a) while(a)
#define iF(a) if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)if(a)
#define If(a) iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)iF(a)
#define IF(a) If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)If(a)
int a=0;
IF(a)
printf("Infinite!\n");
return 0;
}وهذا من نفس المبدأint main()
{
#define _ [1][1][1][1][1][1][1][1][1][1][1][1][1][1]
#define __ _ _ _ _ _ _ _ _ _ _
#define ___ __ __ __ __ __ __ __ __ __
int a ___={0x36a2};
}هل سمعت من من قبل بالدالة atexit ؟ ماذا تتوقع من الكود التالي#include<cstdio>
void p()
{
printf("First!");
}
int main()
{
atexit(p);
printf("Last!\n");
}اقرأ الوثائق :)
بالتوفيق