PDA

View Full Version : دستورات پیش پردازنده



محسن=0
شنبه 16 بهمن 1395, 21:48 عصر
سلام

دستورات پیش پردازنده در شبه کد زیر رو نمیتونم درک کنم
ممنون میشم یه نفر کامل توضیح بده


#ifndef Header_H#define Header_H
class myclass
{
public:
void function1();
void function2();
...
...
...
};
#endif

negative60
یک شنبه 17 بهمن 1395, 08:53 صبح
اینجا در مورد ماکرو‌ها (http://www.sourcecodes.ir/post.php?id=314&title=%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D9%BE%DB%8C%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D9%86%D8%AF%D9%87-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%DB%8C-%D9%BE%D9%84%D8%A7%D8%B3-%D9%BE%D9%84%D8%A7%D8%B3-++C) کامل توضیح داده شده

اگر یک کلاس معمولی بدون استفاده از ماکرو بسازی و اگر تو یک فایل بیشتر از یک بار اون کلاس فراخوانی بشه به دلیل تعریف مجدد کلاس کامپایلر خطا خواهد داد


#include "myclass.h"
#include "myclass.h"


int main()
{
myclass Test;
return 0;
}



اما اگر برای این کلاس یک ماکرو تعریف کنیم به دلیل اینکه شرط فقط یکبار اتفاق میافته مشکل فراخوانی مجدد هدر رفع خواهد شد


#ifndef Header_H //تعریف نشده است Header_H اگر ماکرو
#define Header_H //تعریف بشه Header_H ماکرو

//تعریف کلاس
class myclass
{
};


#endif //پایان شرط



توجه کنید برای چندین کلاس نباید از یک نام برای تعریف ماکرو استفاده کنید، برای هر کلاس یک ماکرو. (زمان ساخت یک کلاس Qt Creator این کار رو به صورت خودکار انجام میده)