#بیشتر_بدانید
اهمیت هدر گارد ها
header guards
حتما همتون تا حالا هدر گاردهایی مثل بالا رو دیدید
اما اهمیتشون چیه؟
خیلی خلاصه جلوگیری از تعریف چندبار سهوی و ارور های ناخواسته
در مثال زیر خیلی ساده بهتون میگم چرا مفیدن
یه نکته » من برای جلوگیری از تکرار اسم هدر گارد ها از روشی استفاده میکنم که تقریبا اکثر برنامه نویس ها از اون روش استفاده میکنن
که
HEADERNAME
همون نام فایل هدر هست
حالا مثال:
محتویات فایل header2.h
محتویات فایل header1.h
محتویات فایل اصلی سی پلاس پلاس
میبینیدکه ارور نمیده و اجرا میشه
حالا
`
رو به فایل سی پلاس پلاس اضافه کنین
چه قبل اون header1.h بذارید چه بعدش ارور میده چون
دوبار تعریف میشه
حالا بیایید هدرگارد برای هر دو هدر تعریف کنید
محتویات جدید header2.h
محتویات جدید header1.h
و محتوای فایل اصلی
دیگه ارور نمیده
چند بار هم اینکلاد کنم خیالتون راحت شه
امیدوارم پی برده به باشید به اهمیتشون
نکته آخر: نوشته اشکان♻️
در بعضی کامپایلر ها لازم نیست
#pragma once
دقیقا همین کار رو انجام می
بعضی کامپایلر ها
موفق باشید
کدهاتون هم بی باگ
اهمیت هدر گارد ها
header guards
#ifndef HEADER_H
#define HEADER_H
#endif
حتما همتون تا حالا هدر گاردهایی مثل بالا رو دیدید
اما اهمیتشون چیه؟
خیلی خلاصه جلوگیری از تعریف چندبار سهوی و ارور های ناخواسته
در مثال زیر خیلی ساده بهتون میگم چرا مفیدن
یه نکته » من برای جلوگیری از تکرار اسم هدر گارد ها از روشی استفاده میکنم که تقریبا اکثر برنامه نویس ها از اون روش استفاده میکنن
#define HEADERNAME_H
که
HEADERNAME
همون نام فایل هدر هست
حالا مثال:
محتویات فایل header2.h
#include <iostream>
using namespace std;
void helloworld()
{cout<<"Hello World!"<<endl;
}
محتویات فایل header1.h
#include "header2.h"
void sayhello()
{helloworld();
}
محتویات فایل اصلی سی پلاس پلاس
#include "header1.h"
int main(){sayhello();
return 0;
}
میبینیدکه ارور نمیده و اجرا میشه
حالا
#include "header2.h"
`
رو به فایل سی پلاس پلاس اضافه کنین
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
چه قبل اون header1.h بذارید چه بعدش ارور میده چون
`void helloworld()
دوبار تعریف میشه
حالا بیایید هدرگارد برای هر دو هدر تعریف کنید
محتویات جدید header2.h
#ifndef HEADER2_H
#define HEADER2_H
#include <iostream>
using namespace std;
void helloworld()
{cout<<"Hello World!"<<endl;
}
#endif
محتویات جدید header1.h
#ifndef HEADER1_H
#define HEADER1_H
#include "header2.h"
void sayhello()
{helloworld();
}
#endif
و محتوای فایل اصلی
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
دیگه ارور نمیده
چند بار هم اینکلاد کنم خیالتون راحت شه
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
امیدوارم پی برده به باشید به اهمیتشون
نکته آخر: نوشته اشکان♻️
در بعضی کامپایلر ها لازم نیست
این همه تایپکنیم
#pragma once
دقیقا همین کار رو انجام می
دهط
بازم میگم فق
بعضی کامپایلر ها
موفق باشید
کدهاتون هم بی باگ
#بیشتر_بدانید
اهمیت هدر گارد ها
header guards
حتما همتون تا حالا هدر گاردهایی مثل بالا رو دیدید
اما اهمیتشون چیه؟
خیلی خلاصه جلوگیری از تعریف چندبار سهوی و ارور های ناخواسته
در مثال زیر خیلی ساده بهتون میگم چرا مفیدن
یه نکته » من برای جلوگیری از تکرار اسم هدر گارد ها از روشی استفاده میکنم که تقریبا اکثر برنامه نویس ها از اون روش استفاده میکنن
که
HEADERNAME
همون نام فایل هدر هست
حالا مثال:
محتویات فایل header2.h
محتویات فایل header1.h
محتویات فایل اصلی سی پلاس پلاس
میبینیدکه ارور نمیده و اجرا میشه
حالا
`
رو به فایل سی پلاس پلاس اضافه کنین
چه قبل اون header1.h بذارید چه بعدش ارور میده چون
دوبار تعریف میشه
حالا بیایید هدرگارد برای هر دو هدر تعریف کنید
محتویات جدید header2.h
محتویات جدید header1.h
و محتوای فایل اصلی
دیگه ارور نمیده
چند بار هم اینکلاد کنم خیالتون راحت شه
امیدوارم پی برده به باشید به اهمیتشون
نکته آخر: نوشته اشکان♻️
در بعضی کامپایلر ها لازم نیست
#pragma once
دقیقا همین کار رو انجام می
بعضی کامپایلر ها
موفق باشید
کدهاتون هم بی باگ
اهمیت هدر گارد ها
header guards
#ifndef HEADER_H
#define HEADER_H
#endif
حتما همتون تا حالا هدر گاردهایی مثل بالا رو دیدید
اما اهمیتشون چیه؟
خیلی خلاصه جلوگیری از تعریف چندبار سهوی و ارور های ناخواسته
در مثال زیر خیلی ساده بهتون میگم چرا مفیدن
یه نکته » من برای جلوگیری از تکرار اسم هدر گارد ها از روشی استفاده میکنم که تقریبا اکثر برنامه نویس ها از اون روش استفاده میکنن
#define HEADERNAME_H
که
HEADERNAME
همون نام فایل هدر هست
حالا مثال:
محتویات فایل header2.h
#include <iostream>
using namespace std;
void helloworld()
{cout<<"Hello World!"<<endl;
}
محتویات فایل header1.h
#include "header2.h"
void sayhello()
{helloworld();
}
محتویات فایل اصلی سی پلاس پلاس
#include "header1.h"
int main(){sayhello();
return 0;
}
میبینیدکه ارور نمیده و اجرا میشه
حالا
#include "header2.h"
`
رو به فایل سی پلاس پلاس اضافه کنین
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
چه قبل اون header1.h بذارید چه بعدش ارور میده چون
`void helloworld()
دوبار تعریف میشه
حالا بیایید هدرگارد برای هر دو هدر تعریف کنید
محتویات جدید header2.h
#ifndef HEADER2_H
#define HEADER2_H
#include <iostream>
using namespace std;
void helloworld()
{cout<<"Hello World!"<<endl;
}
#endif
محتویات جدید header1.h
#ifndef HEADER1_H
#define HEADER1_H
#include "header2.h"
void sayhello()
{helloworld();
}
#endif
و محتوای فایل اصلی
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
دیگه ارور نمیده
چند بار هم اینکلاد کنم خیالتون راحت شه
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
#include "header1.h"
#include "header2.h"
int main(){sayhello();
return 0;
}
امیدوارم پی برده به باشید به اهمیتشون
نکته آخر: نوشته اشکان♻️
در بعضی کامپایلر ها لازم نیست
این همه تایپکنیم
#pragma once
دقیقا همین کار رو انجام می
دهط
بازم میگم فق
بعضی کامپایلر ها
موفق باشید
کدهاتون هم بی باگ