لطفا صبرکنید...
۱۰٪
تخفیف ویژه خرید نقدی
کد: L74W2B
زرین‌پال درگاه امن
فرصت محدود
خرید نقدی
0

۰.۱۰ — پیکربندی کامپایلر: افزونه‌های کامپایلر (Compiler Extensions)


استاندارد C++ قوانینی را تعیین می‌کند که مشخص می‌کند برنامه‌ها در شرایط خاص چگونه باید رفتار کنند. و در بیشتر موارد، کامپایلرها از این قوانین پیروی می‌کنند. با این حال، بسیاری از کامپایلرها تغییرات خود را به زبان اعمال می‌کنند، اغلب برای افزایش سازگاری با نسخه‌های دیگر زبان (مانند C99) یا به دلایل تاریخی. این رفتارهای خاص کامپایلر، افزونه‌های کامپایلر (Compiler Extensions) نامیده می‌شوند.

نوشتن برنامه‌ای که از یک افزونهٔ کامپایلر استفاده می‌کند، به شما امکان می‌دهد برنامه‌هایی بنویسید که با استاندارد C++ ناسازگار هستند. برنامه‌هایی که از افزونه‌های غیراستاندارد استفاده می‌کنند، معمولاً روی کامپایلرهای دیگر (که از همان افزونه‌ها پشتیبانی نمی‌کنند) کامپایل نمی‌شوند، یا اگر هم کامپایل شوند، ممکن است به درستی اجرا نشوند.

متأسفانه، افزونه‌های کامپایلر اغلب به‌طور پیش‌فرض فعال هستند. این موضوع به ویژه برای یادگیرندگان جدید مضر است، زیرا ممکن است فکر کنند برخی رفتارهایی که کار می‌کند بخشی از استاندارد رسمی C++ است، در حالی که در واقع کامپایلر آنها simplemente بیش از حد سهل‌گیر است.

از آنجایی که افزونه‌های کامپایلر هرگز ضروری نیستند و باعث می‌شوند برنامه‌های شما با استانداردهای C++ سازگار نباشند، توصیه می‌کنیم افزونه‌های کامپایلر را غیرفعال کنید.

بهترین روش

افزونه‌های کامپایلر را غیرفعال کنید تا اطمینان حاصل کنید که برنامه‌های شما (و روش‌های کدنویسی‌تان) با استانداردهای C++ سازگار باقی می‌مانند و روی هر سیستمی کار خواهند کرد.

غیرفعال کردن افزونه‌های کامپایلر

برای کاربران Visual Studio

برای غیرفعال کردن افزونه‌های کامپایلر، روی نام پروژه خود در پنجره Solution Explorer کلیک راست کرده و سپس Properties را انتخاب کنید:

از پنجره Project (پروژه)، ابتدا مطمئن شوید که فیلد Configuration (پیکربندی) روی All Configurations (همه پیکربندی‌ها) تنظیم شده است.

سپس، روی برگه C/C++ > Language (زبان) کلیک کنید و Conformance mode (حالت انطباق) را روی Yes (/permissive-) (بله) تنظیم کنید (اگر از قبل به‌طور پیش‌فرض روی آن تنظیم نشده باشد).

برای کاربران Code::Blocks

افزونه‌های کامپایلر را از طریق منوی Settings > Compiler > Compiler flags غیرفعال کنید، سپس گزینه -pedantic-errors را پیدا کرده و آن را علامت بزنید.

فعلاً آن را روی Debug تنظیم کنید.

همچنین می‌توانید با انتخاب منوی Build > Configuration Manager، به کادر محاوره‌ای مدیریت پیکربندی (Configuration Manager) دسترسی پیدا کنید و پیکربندی فعال راه‌حل را تغییر دهید.

در سمت راست کادر کشویی Solution Configurations، Visual Studio همچنین یک کادر کشویی Solution Platforms دارد که به شما امکان می‌دهد بین پلتفرم‌های x86 (۳۲ بیتی) و x64 (۶۴ بیتی) جابه‌جا شوید.

برای کاربران gcc و Clang

می‌توانید افزونه‌های کامپایلر را با اضافه کردن گزینهٔ -pedantic-errors به خط فرمان کامپایل، غیرفعال کنید.

برای کاربران VS Code

  • فایل tasks.json را باز کنید، عبارت “args” را پیدا کنید، و سپس خط “${file}” را در آن بخش پیدا کنید.

  • بالای خط “${file}” ، یک خط جدید حاوی دستور زیر اضافه کنید:

 
"-pedantic-errors",

در زمان نوشتن این مطلب، VS Code به‌طور خودکار یک خط جدید (newline) به انتهای فایل‌های کدی که فاقد آن هستند، اضافه نمی‌کند (کاری که طبق استاندارد C++ به‌طور دقیق (pedantically) مورد نیاز است). خوشبختانه، می‌توانیم به VS Code بگوییم که این کار را انجام دهد:

  • VS Code را باز کنید و به File > Preferences > Settings بروید (در مک: Code > Preferences > Settings). این کار یک کادر محاوره‌ای تنظیمات را باز می‌کند.

  • عبارت insert final newline را در نوار جستجو وارد کنید.

  • در هر دو برگه Workspace Settings و User Settings، اطمینان حاصل کنید که کادر انتخاب با عنوان Files: Insert Final Newline علامت زده شده است.

یک یادآوری

این تنظیمات به‌صورت مخصوص هر پروژه اعمال می‌شوند. هر بار که یک پروژه جدید ایجاد می‌کنید، باید آنها را تنظیم کنید، یا یک پروژهٔ الگو (Template) با آن تنظیمات یک بار ایجاد کرده و از آن برای ساخت پروژه‌های جدید استفاده کنید.

 
فرشید پوشنده وب‌سایت
من فرشید پوشنده، کارشناس ارشد مهندسی نرم‌افزار، مدیر و مدرس آکادمی آنلاین آموزش برنامه‌نویسی کدنویسم هستم. با سال‌ها تجربه در حوزه آموزش و توسعه نرم‌افزار، تلاش کرده‌ام جامع‌ترین دوره‌های آموزشی در حوزه برنامه‌نویسی را به علاقه‌مندان ارائه دهم. در طول مسیر حرفه‌ای خود، به زبان‌ها و فناوری‌های C++ ،Java ،Python ،Qt ،QML ،SQL ،HTML ،CSS و وردپرس تسلط پیدا کرده‌ام.

دیدگاهتان را بنویسید