تفاوت کلیدی – عملکرد ماکرو در مقابل درون خطی
یک ماکرو قطعه ای از کد است که یک دستورالعمل پیش پردازنده است. یک تابع درون خطی یک ویژگی بهبود C++ برای به حداقل رساندن زمان اجرای یک برنامه است. بنابراین، تفاوت اصلی بین ماکرو و تابع درون خطی این است که یک ماکرو توسط پیش پردازنده بررسی می شود در حالی که یک تابع درون خطی توسط کامپایلر بررسی می شود.
یک ماکرو در ابتدای برنامه و قبل از آن یک علامت هش گنجانده شده است. هنگامی که نام ماکرو در برنامه وجود دارد، با محتوای ماکرو جایگزین می شود.
ماکرو چیست؟
پیش پردازنده برنامه ای است که کد منبع را قبل از عبور از کامپایلر پردازش می کند.با استفاده از خط فرمان پیش پردازنده یا دستورالعمل ها عمل می کند. در برنامه، دستورالعمل های پیش پردازنده قبل از برنامه اصلی در برنامه منبع قرار می گیرند. قبل از اینکه کد منبع از کامپایلر عبور کند، توسط پیش پردازنده برای دستورالعمل های پیش پردازنده بررسی می شود. دستورالعمل های پیش پردازنده دارای نمادهستند. برخلاف سایر گزاره ها، آنها با نقطه ویرگول خاتمه نمی یابند. یکی از انواع دستورالعمل های پیش پردازنده، ماکرو است. به طور کلی، ماکروها با حروف بزرگ نوشته می شوند.
شکل 01: برنامه C++ با ماکرو
طبق برنامه بالا، خط 3 و خط 4 نشان دهنده ماکروها هستند. هنگام محاسبه مساحت، مقدار PI با استفاده از ماکرو تعریف شده جایگزین می شود. در خط 14، volume=CUBE(value)، پیش پردازنده عبارت را به صورت volume=(مقدارمقدارمقدار) گسترش می دهد.پیدا کردن مکعب را می توان به عنوان یک تابع نوشت، اما در اینجا با استفاده از یک ماکرو نوشته می شود. اگر عبارتی به عنوان volume=CUBE (x+y) وجود داشته باشد، آنگاه به حجم=(x+yx+yx+y) گسترش خواهد یافت.
برخی نشانه های برنامه نویسی ممکن است به راحتی اشتباه تایپ شوند. آنها را می توان با استفاده از ماکروها جایگزین کرد. به عنوان مثال، define AND &&، define OR ||. یک تعریف کلان همچنین میتواند شامل عباراتی مانند define AREA 45.56 باشد.
تابع درون خطی چیست؟
هنگامی که یک تابع فراخوانی می شود، کامپایلر مدتی طول می کشد تا آن را اجرا کند. اگر تابع خیلی پیچیده نباشد، برنامه نویس می تواند تابع را به یک تابع درون خطی تبدیل کند. به برنامه زیر مراجعه کنید.
شکل 02: عملکرد بدون Inline
print_hello یک تابع ساده است. هنگامی که تابع فراخوانی می شود، رشته "Hello" را چاپ می کند. زمان اجرای آن تابع 0.187 ثانیه است. هنگام استفاده از کلمه کلیدی درون خطی به شرح زیر، زمان اجرا به 0.064 ثانیه کاهش می یابد.
شکل 03: تابع درون خطی
بنابراین با استفاده از کلمه کلیدی درون خطی زمان اجرا کاهش می یابد. اگر حلقهها، دستورات سوئیچ وجود داشته باشد و اگر تابع دارای متغیرهای ثابت یا توابع بازگشتی باشد، ممکن است توابع درون خطی کار نکنند.
تفاوت بین عملکرد ماکرو و درون خطی چیست؟
ماکرو در مقابل عملکرد درون خطی |
|
یک ماکرو قطعهای از کد است که یک دستورالعمل پیشپردازنده است که در ابتدای برنامه و قبل از آن یک علامت هش گنجانده شده است. | یک تابع درون خطی یک ویژگی بهبود C++ برای به حداقل رساندن زمان اجرای یک برنامه است. |
زمان ارزیابی | |
در ماکرو، آرگومان هر بار که در برنامه استفاده می شود، ارزیابی می شود. | در خط درونی، آرگومان یک بار ارزیابی می شود. |
بررسی شده توسط | |
یک ماکرو توسط پیش پردازنده بررسی می شود. | یک تابع درون خطی توسط کامپایلر بررسی می شود. |
کلمه کلیدی | |
مارکو از define استفاده می کند. | عملکرد درون خطی از کلمه کلیدی "inline" استفاده می کند. |
استفاده | |
ماکرو را می توان برای تعریف ثابت ها، عبارات، برای جایگزینی متن تحت اللفظی و برای تعریف توابع و غیره استفاده کرد. | می توان از یک تابع درون خطی برای به حداقل رساندن زمان اجرای برنامه استفاده کرد. |
فسخ | |
ماکرو با خط جدید خاتمه می یابد. | تابع درون خطی با پرانتز فرفری در انتهای تابع درون خطی خاتمه می یابد. |
نقطه تعریف | |
مارکو در ابتدای برنامه تعریف شده است. | یک تابع درون خطی می تواند داخل یا خارج از کلاس باشد. |
خلاصه - عملکرد ماکرو در مقابل Inline
این مقاله تفاوت بین عملکرد ماکرو و درون خطی را مورد بحث قرار داد. این مفاهیم در برنامه نویسی ++C استفاده می شود. تفاوت بین ماکرو و تابع درون خطی این است که یک ماکرو توسط پیش پردازنده بررسی می شود در حالی که یک تابع درون خطی توسط کامپایلر بررسی می شود.