.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F\. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "GDC 1" .TH GDC 1 2026-08-10 gcc-16 GNU .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" gdc \- کامپایلر مبتنی بر GCC برای زبان برنامه‌نویسی D .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" gdc [\fB\-c\fR|\fB\-S\fR] [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR] [\fB\-W\fR\fIwarn\fR...] [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...] [\fB\-f\fR\fIoption\fR...] [\fB\-m\fR\fImachine\-option\fR...] [\fB\-o\fR \fIoutfile\fR] [@\fIfile\fR] \fIinfile\fR... .PP تنها پرکاربردترین گزینه‌ها در اینجا فهرست شده‌اند؛ برای سایر موارد به ادامه متن مراجعه کنید. .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \fBgdc\fR کامپایلر گنو برای زبان D است و از بسیاری از گزینه‌های مشابه \fBgcc\fR پشتیبانی می‌کند. این راهنما تنها گزینه‌های اختصاصی \fBgdc\fR را مستندسازی می‌کند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .SS "پرونده‌های ورودی و خروجی (Input and Output files)" .IX Subsection "Input and Output files" برای هر پرونده ورودی مشخص، پسوند نام پرونده تعیین‌کننده نوع کامپایلی است که انجام می‌شود. انواع نام‌های پرونده ورودی زیر پشتیبانی می‌شوند: .IP \fIfile\fR\fB.d\fR 4 .IX Item "file.d" پرونده‌های منبع D. .IP \fIfile\fR\fB.dd\fR 4 .IX Item "file.dd" پرونده‌های منبع Ddoc. .IP \fIfile\fR\fB.di\fR 4 .IX Item "file.di" پرونده‌های رابط D. .PP می‌توانید بیش از یک پرونده ورودی را در خط فرمان \fBgdc\fR مشخص کنید، که هر یک به‌طور جداگانه در فرآیند کامپایل پردازش می‌شوند. اگر گزینه \&\f(CW\*(C`\-o \fR\f(CIfile\fR\f(CW\*(C'\fR را مشخص کنید، تمام پرونده‌های ورودی با یکدیگر کامپایل شده و یک پرونده خروجی واحد به نام \fIfile\fR تولید می‌شود. این کار حتی هنگام استفاده از \f(CW\*(C`\-S\*(C'\fR یا \f(CW\*(C`\-c\*(C'\fR نیز مجاز است. .PP یک پرونده رابط D تنها شامل مواردی است که وارد کردن (import) ماژول به آن نیاز دارد، نه کل پیاده‌سازی آن ماژول. این پرونده‌ها را می‌توان با استفاده از گزینه \f(CW\*(C`\-H\*(C'\fR توسط \fBgdc\fR از یک پرونده منبع D ایجاد کرد. هنگامی که کامپایلر یک اعلان import را حل‌وفصل می‌کند، ابتدا به دنبال پرونده‌های منطبق \fI.di\fR و سپس به دنبال \fI.d\fR می‌گردد. .PP یک پرونده منبع Ddoc شامل کدهایی به زبان پردازشگر ماکروی D است. این ساختار در درجه اول برای تولید مستندات کاربری از روی کامنت‌های درون کد، با گرایش جزئی به سمت تولید HTML طراحی شده است. اگر یک پرونده منبع \fI.d\fR با رشته \&\f(CW\*(C`Ddoc\*(C'\fR آغاز شود، به عنوان مستندات عمومی در نظر گرفته می‌شود، نه به عنوان یک پرونده منبع D. .SS "گزینه‌های زمان اجرا (Runtime Options)" .IX Subsection "Runtime Options" این گزینه‌ها بر رفتار زمان اجرای برنامه‌های کامپایل‌شده با \&\fBgdc\fR تأثیر می‌گذارند. .IP \fB\-fall\-instantiations\fR 4 .IX Item "-fall-instantiations" تولید کد برای تمام نمونه‌سازی‌های قالب (template instantiations). راهبرد پیش‌فرض تولید قالب بر این است که برای اعلان‌هایی که یا به‌طور فرضی نمونه‌سازی شده‌اند (مانند \f(CW\*(C`_\|\_traits(compiles, ...)\*(C'\fR) یا از یک ماژول واردشده می‌آیند که در حال کامپایل نیست، کدی تولید نشود. .IP \fB\-fno\-assert\fR 4 .IX Item "-fno-assert" تولید کد را برای قراردادهای \f(CW\*(C`assert\*(C'\fR غیرفعال می‌کند. .IP \fB\-fno\-bounds\-check\fR 4 .IX Item "-fno-bounds-check" بررسی محدوده آرایه را برای تمام توابع غیرفعال می‌کند که می‌تواند کارایی کدهایی را که به‌طور گسترده از آرایه‌ها استفاده می‌کنند بهبود بخشد. توجه داشته باشید که اگر کد مورد نظر واقعاً محدودیت‌های محدوده آرایه را نقض کند، این گزینه می‌تواند منجر به رفتار غیرقابل پیش‌بینی شود. استفاده از این گزینه در صورتی امن است که مطمئن باشید کد شما هرگز خطای \f(CW\*(C`RangeError\*(C'\fR صادر نمی‌کند. .IP \fB\-fbounds\-check=\fR\fIvalue\fR 4 .IX Item "-fbounds-check=value" یک جایگزین برای \fB\-fbounds\-check\fR که امکان کنترل بیشتر بر روی محل فعال یا غیرفعال شدن بررسی محدوده را فراهم می‌کند. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBon\fR 4 .IX Item "on" بررسی محدوده آرایه را برای تمام توابع فعال می‌کند. .IP \fBsafeonly\fR 4 .IX Item "safeonly" بررسی محدوده آرایه را تنها برای توابع \f(CW@safe\fR فعال می‌کند. .IP \fBoff\fR 4 .IX Item "off" بررسی محدوده آرایه را به‌طور کامل غیرفعال می‌کند. .RE .RS 4 .RE .IP \fB\-fno\-builtin\fR 4 .IX Item "-fno-builtin" توابع توکار (built\-in) را تشخیص نده مگر اینکه با پیشوند \&\fB_\|\_builtin_\fR آغاز شوند. به‌طور پیش‌فرض، کامپایلر تشخیص می‌دهد که چه زمانی یک تابع در بسته \f(CW\*(C`core.stdc\*(C'\fR یک تابع توکار است. .IP \fB\-fcheckaction=\fR\fIvalue\fR 4 .IX Item "-fcheckaction=value" این گزینه کدی را که هنگام شکست شرط (assertion)، بررسی محدوده یا شکست final switch تولید می‌شود، کنترل می‌کند. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBcontext\fR 4 .IX Item "context" پرتاب یک خطای \f(CW\*(C`AssertError\*(C'\fR همراه با اطلاعات زمینه اضافی. .IP \fBhalt\fR 4 .IX Item "halt" توقف اجرای برنامه. .IP \fBthrow\fR 4 .IX Item "throw" پرتاب یک خطای \f(CW\*(C`AssertError\*(C'\fR (حالت پیش‌فرض). .RE .RS 4 .RE .IP \fB\-fdebug\fR 4 .IX Item "-fdebug" .PD 0 .IP \fB\-fdebug=\fR\fIvalue\fR 4 .IX Item "-fdebug=value" .PD کامپایل کدهای شرطی \f(CW\*(C`debug\*(C'\fR را در برنامه فعال می‌کند. گزینه \fB\-fdebug\fR به‌تنهایی سطح دیباگ را روی \f(CW1\fR تنظیم می‌کند، در حالی که \fB\-fdebug=\fR کدهای \f(CW\*(C`debug\*(C'\fR مشخص‌شده با هر یک از مقادیر زیر را فعال می‌کند: .RS 4 .IP \fBident\fR 4 .IX Item "ident" کامپایل هر کد \f(CW\*(C`debug\*(C'\fR مشخص‌شده توسط \fIident\fR را فعال می‌کند. .RE .RS 4 .RE .IP \fB\-fno\-druntime\fR 4 .IX Item "-fno-druntime" مشخصات <\fBhttps://dlang.org/spec/betterc.html\fR> را پیاده‌سازی می‌کند. فرض می‌کند که کامپایل، محیطی بدون کتابخانه زمان اجرای D را هدف قرار داده است. .Sp این معادل کامپایل با گزینه‌های زیر است: .Sp .Vb 1 \& gdc \-nophoboslib \-fno\-exceptions \-fno\-moduleinfo \-fno\-rtti .Ve .IP \fB\-fextern\-std=\fR\fIstandard\fR 4 .IX Item "-fextern-std=standard" سازگاری درهم‌ریزی نام‌های C++ را با نسخه مشخص‌شده توسط \&\fIstandard\fR تنظیم می‌کند. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBc++98\fR 4 .IX Item "c++98" .PD 0 .IP \fBc++03\fR 4 .IX Item "c++03" .PD مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW199711\fR تنظیم می‌کند. .IP \fBc++11\fR 4 .IX Item "c++11" مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW201103\fR تنظیم می‌کند. .IP \fBc++14\fR 4 .IX Item "c++14" مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW201402\fR تنظیم می‌کند. .IP \fBc++17\fR 4 .IX Item "c++17" مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW201703\fR تنظیم می‌کند. این مقدار پیش‌فرض است. .IP \fBc++20\fR 4 .IX Item "c++20" مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW202002\fR تنظیم می‌کند. .IP \fBc++23\fR 4 .IX Item "c++23" مقدار \f(CW\*(C`_\|\_traits(getTargetInfo, "cppStd")\*(C'\fR را روی \f(CW202302\fR تنظیم می‌کند. .RE .RS 4 .RE .IP \fB\-finclude\-imports\fR 4 .IX Item "-finclude-imports" ماژول‌های واردشده (imported) را در فرآیند کامپایل می‌گنجاند، گویی که در خط فرمان مشخص شده‌اند. هنگامی که این گزینه فعال باشد، تمام ماژول‌های واردشده به جز مواردی که بخشی از libphobos هستند کامپایل می‌شوند. .IP \fB\-fno\-invariants\fR 4 .IX Item "-fno-invariants" تولید کد را برای قراردادهای پایا (\f(CW\*(C`invariant\*(C'\fR) کلاس غیرفعال می‌کند. .IP \fB\-fmain\fR 4 .IX Item "-fmain" یک تابع پیش‌فرض \f(CWmain()\fR را هنگام کامپایل تولید می‌کند. این گزینه هنگام اجرای آزمون‌های واحد (unittests) برای یک کتابخانه مفید است، زیرا اجرای آزمون‌های واحد درون کتابخانه را بدون نیاز به تعریف دستی تابع نقطه ورود ممکن می‌سازد. این گزینه زمانی که \&\f(CW\*(C`main\*(C'\fR قبلاً در کد کاربر تعریف شده باشد هیچ اثری ندارد. .IP \fB\-fno\-moduleinfo\fR 4 .IX Item "-fno-moduleinfo" تولید \f(CW\*(C`ModuleInfo\*(C'\fR و توابع مرتبط را که بدون آن بدون ارجاع باقی می‌مانند غیرفعال می‌کند، که ممکن است امکان پیوند به برنامه‌هایی را فراهم سازد که به زبان D نوشته نشده‌اند. توابعی که تولید نمی‌شوند شامل سازنده‌ها و مخرب‌های ماژول (\f(CW\*(C`static this\*(C'\fR و \&\f(CW\*(C`static ~this\*(C'\fR)، کدهای \f(CW\*(C`unittest\*(C'\fR و توابع ثبت \f(CW\*(C`DSO\*(C'\fR برای کدهای پیوندخورده به‌طور پویا هستند. .IP \fB\-fonly=\fR\fIfilename\fR 4 .IX Item "-fonly=filename" به کامپایلر دستور می‌دهد تمام ماژول‌های خط فرمان را تجزیه کرده و تحلیل معنایی را روی آن‌ها انجام دهد، اما فقط برای ماژول مشخص‌شده توسط \fIfilename\fR کد تولید کند. .IP \fB\-fno\-postconditions\fR 4 .IX Item "-fno-postconditions" تولید کد را برای قراردادهای پس‌شرط \f(CW\*(C`out\*(C'\fR غیرفعال می‌کند. .IP \fB\-fno\-preconditions\fR 4 .IX Item "-fno-preconditions" تولید کد را برای قراردادهای پیش‌شرط \f(CW\*(C`in\*(C'\fR غیرفعال می‌کند. .IP \fB\-fpreview=\fR\fIid\fR 4 .IX Item "-fpreview=id" یک تغییر آینده زبان D را که با \fIid\fR مشخص شده است فعال می‌کند. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBall\fR 4 .IX Item "all" تمام قابلیت‌های آینده زبان D را فعال می‌کند. .IP \fBbitfields\fR 4 .IX Item "bitfields" فیلدهای بیتی (bit-fields) را در D پیاده‌سازی می‌کند. .IP \fBdip1000\fR 4 .IX Item "dip1000" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR> (اشاره‌گرهای با دامنه محدود / Scoped pointers) را پیاده‌سازی می‌کند. .IP \fBdip1008\fR 4 .IX Item "dip1008" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1008.md\fR> (مجاز دانستن استثناها در کدهای \f(CW@nogc\fR) را پیاده‌سازی می‌کند. .IP \fBdip1021\fR 4 .IX Item "dip1021" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/accepted/DIP1021.md\fR> (آرگومان‌های تغییرپذیر تابع) را پیاده‌سازی می‌کند. .IP \fBdip25\fR 4 .IX Item "dip25" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR> (ارجاع‌های مهروموم‌شده / Sealed references) را پیاده‌سازی می‌کند. .IP \fBdtorfields\fR 4 .IX Item "dtorfields" تولید کد برای تخریب فیلدهای اشیائی را که تا حدی ساخته شده‌اند فعال می‌کند. .IP \fBfieldwise\fR 4 .IX Item "fieldwise" تولید برابری ساختار را برای استفاده از مقایسه‌های فیلد‌به‌فیلد فعال می‌کند. .IP \fBfixaliasthis\fR 4 .IX Item "fixaliasthis" قوانین جستجوی جدیدی را پیاده‌سازی می‌کند که پیش از جستجو در دامنه‌های بالاتر، دامنه فعلی را برای \f(CW\*(C`alias this\*(C'\fR بررسی می‌کند. .IP \fBfiximmutableconv\fR 4 .IX Item "fiximmutableconv" تبدیل‌های تغییرناپذیر نامطمئنی را که پیش‌تر به اشتباه مجاز بودند ممنوع می‌کند. .IP \fBin\fR 4 .IX Item "in" پارامترهای \f(CW\*(C`in\*(C'\fR را به معنای \f(CW\*(C`scope const [ref]\*(C'\fR پیاده‌سازی کرده و مقادیر rvalue را می‌پذیرد. .IP \fBinclusiveincontracts\fR 4 .IX Item "inclusiveincontracts" قراردادهای \f(CW\*(C`in\*(C'\fR در متدهای بازنویسی‌شده را به گونه‌ای پیاده‌سازی می‌کند که ابرمجموعه‌ای از قرارداد والد باشند. .IP \fBnosharedaccess\fR 4 .IX Item "nosharedaccess" تمام دسترسی‌ها به اشیاء حافظه اشتراکی را غیرفعال و ممنوع می‌کند. .IP \fBrvaluerefparam\fR 4 .IX Item "rvaluerefparam" آرگومان‌های rvalue را برای پارامترهای \f(CW\*(C`ref\*(C'\fR پیاده‌سازی می‌کند. .IP \fBsystemvariables\fR 4 .IX Item "systemvariables" دسترسی به متغیرهای علامت‌گذاری‌شده با \f(CW@system\fR را از داخل کدهای \f(CW@safe\fR غیرفعال می‌کند. .RE .RS 4 .RE .IP \fB\-frelease\fR 4 .IX Item "-frelease" کامپایل در حالت انتشار (release) را فعال می‌کند، که به معنای عدم انتشار بررسی‌های زمان اجرا برای قراردادها و شرط‌های assert است. بررسی محدوده آرایه‌ها برای توابع \&\f(CW@system\fR و \f(CW@trusted\fR انجام نمی‌شود، و شکست شرط‌های assertion رفتار تعریف‌نشده خواهد بود. .Sp این معادل کامپایل با گزینه‌های زیر است: .Sp .Vb 2 \& gdc \-fno\-assert \-fbounds\-check=safe \-fno\-invariants \e \& \-fno\-postconditions \-fno\-preconditions \-fno\-switch\-errors .Ve .IP \fB\-frevert=\fR 4 .IX Item "-frevert=" یک قابلیت زبان D را که با \fIid\fR مشخص شده است غیرفعال (واگردانی) می‌کند. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBall\fR 4 .IX Item "all" تمام قابلیت‌های قابل بازگردانی زبان D را غیرفعال می‌کند. .IP \fBdip1000\fR 4 .IX Item "dip1000" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md\fR> (اشاره‌گرهای با دامنه محدود) را بازمی‌گرداند. .IP \fBdip25\fR 4 .IX Item "dip25" پیشنهاد <\fBhttps://github.com/dlang/DIPs/blob/master/DIPs/archive/DIP25.md\fR> (ارجاع‌های مهروموم‌شده) را بازمی‌گرداند. .IP \fBdtorfields\fR 4 .IX Item "dtorfields" تولید کد برای تخریب فیلدهای اشیائی را که تا حدی ساخته شده‌اند غیرفعال می‌کند. .IP \fBintpromote\fR 4 .IX Item "intpromote" ترفیع نوع صحیح به سبک C را برای عبارت‌های یکانی \f(CW\*(C`+\*(C'\fR، \f(CW\*(C`\-\*(C'\fR و \f(CW\*(C`~\*(C'\fR غیرفعال می‌کند. .RE .RS 4 .RE .IP \fB\-fno\-rtti\fR 4 .IX Item "-fno-rtti" تولید اطلاعات نوع در زمان اجرا (RTTI) را برای تمام انواع تعریف‌شده توسط کاربر غیرفعال می‌کند. هر کدی که از ویژگی‌های زبان نیازمند به این اطلاعات استفاده کند، منجر به خطا خواهد شد. .IP \fB\-fno\-switch\-errors\fR 4 .IX Item "-fno-switch-errors" این گزینه کنترل می‌کند که در صورت عدم تطابق با هیچ حالتی در یک عبارت \f(CW\*(C`final switch\*(C'\fR چه کدی تولید شود. رفتار پیش‌فرض زمان اجرا، پرتاب یک \f(CW\*(C`SwitchError\*(C'\fR است. غیرفعال کردن \&\fB\-fswitch\-errors\fR به این معنی است که اجرای برنامه بلافاصله متوقف می‌شود. .IP \fB\-funittest\fR 4 .IX Item "-funittest" کامپایل کدهای \f(CW\*(C`unittest\*(C'\fR را فعال کرده و شناسه \f(CWversion(unittest)\fR را فعال می‌سازد. این گزینه مستلزم \fB\-fassert\fR است. .IP \fB\-fversion=\fR\fIvalue\fR 4 .IX Item "-fversion=value" کامپایل کدهای شرطی \f(CW\*(C`version\*(C'\fR را در برنامه فعال می‌کند که توسط هر یک از مقادیر زیر مشخص می‌شوند: .RS 4 .IP \fBident\fR 4 .IX Item "ident" کامپایل هر کد \f(CW\*(C`version\*(C'\fR مشخص‌شده توسط \fIident\fR را فعال می‌کند. .RE .RS 4 .RE .IP \fB\-fno\-weak\-templates\fR 4 .IX Item "-fno-weak-templates" انتشار اعلان‌هایی را که می‌توانند در چندین شیء به عنوان نمادهای ضعیف (weak symbols) تعریف شوند غیرفعال می‌کند. پیش‌فرض این است که تمام نمادهای عمومی به صورت ضعیف منتشر شوند، مگر اینکه مقصد فاقد پشتیبانی از نمادهای ضعیف باشد. غیرفعال کردن این گزینه به این معنی است که نمادهای مشترک به جای آن در COMDAT قرار می‌گیرند یا خصوصی می‌شوند. .SS "گزینه‌های جستجوی دایرکتوری (Options for Directory Search)" .IX Subsection "Options for Directory Search" این گزینه‌ها دایرکتوری‌ها را برای جستجوی پرونده‌ها، کتابخانه‌ها و سایر بخش‌های کامپایلر مشخص می‌کنند: .IP \fB\-I\fR\fIdir\fR 4 .IX Item "-Idir" مشخص کردن یک دایرکتوری برای جستجوی ماژول‌های واردشده در زمان کامپایل. می‌توان از چندین گزینه \fB\-I\fR استفاده کرد و مسیرها به همان ترتیب مشخص‌شده جستجو می‌شوند. .IP \fB\-J\fR\fIdir\fR 4 .IX Item "-Jdir" مشخص کردن یک دایرکتوری برای جستجوی پرونده‌ها در ایمپورت‌های رشته‌ای (string imports) در زمان کامپایل. این گزینه برای استفاده از عبارت‌های \f(CWimport(file)\fR الزامی است. می‌توان از چندین گزینه \&\fB\-J\fR استفاده کرد و مسیرها به همان ترتیب جستجو می‌شوند. .IP \fB\-L\fR\fIdir\fR 4 .IX Item "-Ldir" هنگام پیوند دادن، یک دایرکتوری برای جستجوی کتابخانه مشخص می‌کند، مشابه با \fBgcc\fR. .IP \fB\-B\fR\fIdir\fR 4 .IX Item "-Bdir" این گزینه مکان یافتن پرونده‌های اجرایی، کتابخانه‌ها، پرونده‌های منبع و پرونده‌های داده خود کامپایلر را مشخص می‌کند، مشابه با \fBgcc\fR. .IP \fB\-fmodule\-file=\fR\fImodule\fR\fB=\fR\fIspec\fR 4 .IX Item "-fmodule-file=module=spec" این گزینه مسیرهای پرونده ماژول‌های واردشده را دستکاری می‌کند، به‌طوری‌که اگر یک ماژول واردشده با تمام یا چپ‌ترین بخش \fImodule\fR مطابقت داشته باشد، از مسیر پرونده در \fIspec\fR به عنوان مکان جستجوی منابع D استفاده می‌شود. این گزینه زمانی استفاده می‌شود که مسیر پرونده منبع و نام‌ها با سلسله‌مراتب بسته و ماژول یکسان نباشد. به مثال‌های زیر توجه کنید: .Sp .Vb 1 \& gdc test.d \-fmodule\-file=A.B=foo.d \-fmodule\-file=C=bar .Ve .Sp این به کامپایلر اعلام می‌کند که هنگام وارد کردن \fIA.B\fR در تمام مسیرهای واردسازی به دنبال پرونده منبع \fIfoo.d\fR بگردد، و هنگام وارد کردن \fIC\fR دایرکتوری \fIbar/\fR را جستجو کند، همان‌طور که در کد D زیر شرح داده شده است: .Sp .Vb 4 \& module test; \& import A.B; // Matches A.B, searches for foo.d \& import C.D.E; // Matches C, searches for bar/D/E.d \& import A.B.C; // No match, searches for A/B/C.d .Ve .IP "\fB\-imultilib\fR \fIdir\fR" 4 .IX Item "-imultilib dir" استفاده از \fIdir\fR به عنوان یک زیرشاخه از دایرکتوری gcc شامل منابع و رابط‌های D مختص معماری هدف. .IP "\fB\-iprefix\fR \fIprefix\fR" 4 .IX Item "-iprefix prefix" مشخص کردن \fIprefix\fR به عنوان پیشوند برای دایرکتوری gcc شامل منابع و رابط‌های D مختص معماری هدف. اگر \fIprefix\fR نمایانگر یک پوشه باشد، باید اسلش پایانی \f(CW\*(Aq/\*(Aq\fR را اضافه کنید. .IP \fB\-nostdinc\fR 4 .IX Item "-nostdinc" عدم جستجو در دایرکتوری‌های استاندارد سیستم برای پرونده‌های منبع و رابط D. تنها دایرکتوری‌هایی که با گزینه‌های \fB\-I\fR مشخص شده‌اند (و در صورت لزوم دایرکتوری پرونده فعلی) جستجو می‌شوند. .SS "تولید کد (Code Generation)" .IX Subsection "Code Generation" علاوه بر گزینه‌های متعدد \fBgcc\fR که تولید کد را کنترل می‌کنند، \&\fBgdc\fR دارای چندین گزینه اختصاصی است. .IP \fB\-H\fR 4 .IX Item "-H" تولید پرونده‌های رابط D برای تمام ماژول‌های در حال کامپایل. کامپایلر پرونده خروجی را بر اساس نام پرونده ورودی تعیین می‌کند، هرگونه مؤلفه دایرکتوری و پسوند را حذف کرده و پسوند \fI.di\fR را اعمال می‌کند. .IP "\fB\-Hd\fR \fIdir\fR" 4 .IX Item "-Hd dir" مشابه با \fB\-H\fR، اما پرونده‌های رابط را در پوشه \fIdir\fR می‌نویسد. این گزینه را می‌توان همراه با \&\fB\-Hf\fR \fIfile\fR استفاده کرد تا مسیر پرونده و پوشه خروجی را به‌طور مستقل تنظیم نمود. .IP "\fB\-Hf\fR \fIfile\fR" 4 .IX Item "-Hf file" مشابه با \fB\-H\fR اما پرونده‌های رابط را در \fIfile\fR می‌نویسد. این گزینه را می‌توان همراه با \&\fB\-Hd\fR \fIdir\fR استفاده کرد تا مسیر پرونده و پوشه خروجی را به‌طور مستقل تنظیم نمود. .IP \fB\-M\fR 4 .IX Item "-M" خروجی دادن وابستگی‌های ماژول تمام پرونده‌های منبع در حال کامپایل در قالبی مناسب برای \&\fBmake\fR. کامپایلر یک قاعده \fBmake\fR شامل نام پرونده شیء برای آن پرونده منبع، یک دونقطه، و نام تمام پرونده‌های واردشده صادر می‌کند. .IP \fB\-MM\fR 4 .IX Item "-MM" مشابه \fB\-M\fR اما ماژول‌های واردشده از پوشه‌های بسته کتابخانه استاندارد D را ذکر نمی‌کند. .IP "\fB\-MF\fR \fIfile\fR" 4 .IX Item "-MF file" هنگام استفاده با \fB\-M\fR یا \fB\-MM\fR، یک \fIfile\fR را برای نوشتن وابستگی‌ها در آن مشخص می‌کند. هنگام استفاده با گزینه‌های درایور \fB\-MD\fR یا \fB\-MMD\fR، گزینه \fB\-MF\fR بر پرونده خروجی وابستگی پیش‌فرض اولویت خواهد داشت. .IP \fB\-MG\fR 4 .IX Item "-MG" این گزینه برای سازگاری با \fBgcc\fR است و توسط کامپایلر نادیده گرفته می‌شود. .IP \fB\-MP\fR 4 .IX Item "-MP" یک هدف ساختگی (phony target) برای هر وابستگی به غیر از ماژول‌های در حال کامپایل خروجی می‌دهد که باعث می‌شود هر یک به چیزی وابسته نباشند. .IP "\fB\-MT\fR \fItarget\fR" 4 .IX Item "-MT target" هدف (\fItarget\fR) قاعده صادرشده توسط تولید وابستگی را دقیقاً به رشته‌ای که مشخص می‌کنید تغییر می‌دهد. اگر چندین هدف می‌خواهید، می‌توانید آن‌ها را به صورت یک آرگومان واحد به \fB\-MT\fR ارسال کنید، یا از چندین گزینه \fB\-MT\fR استفاده نمایید. .IP "\fB\-MQ\fR \fItarget\fR" 4 .IX Item "-MQ target" مشابه با \fB\-MT\fR، اما هر نویسه‌ای را که برای \fBmake\fR خاص است نقل‌قول (quote) می‌کند. .IP \fB\-MD\fR 4 .IX Item "-MD" این گزینه معادل \fB\-M \-MF\fR \fIfile\fR است. درایور \fIfile\fR را با حذف هرگونه مؤلفه دایرکتوری و پسوند از پرونده ورودی و سپس افزودن پسوند \fI.deps\fR تعیین می‌کند. .IP \fB\-MMD\fR 4 .IX Item "-MMD" مشابه \fB\-MD\fR اما ماژول‌های واردشده از دایرکتوری‌های بسته کتابخانه استاندارد D را ذکر نمی‌کند. .IP \fB\-X\fR 4 .IX Item "-X" خروجی دادن اطلاعات توصیف‌کننده محتویات تمام پرونده‌های منبع در حال کامپایل با فرمت JSON در یک پرونده. درایور \fIfile\fR را با حذف مؤلفه‌های دایرکتوری و پسوند از پرونده ورودی، و سپس افزودن پسوند \fI.json\fR تعیین می‌کند. .IP "\fB\-Xf\fR \fIfile\fR" 4 .IX Item "-Xf file" مشابه با \fB\-X\fR، اما تمام محتویات JSON را در \fIfile\fR مشخص‌شده می‌نویسد. .IP \fB\-fdoc\fR 4 .IX Item "-fdoc" تولید مستندات \f(CW\*(C`Ddoc\*(C'\fR و نوشتن آن در یک پرونده. کامپایلر با حذف هرگونه مؤلفه دایرکتوری و پسوند از پرونده ورودی، و افزودن پسوند \fI.html\fR نام \fIfile\fR را مشخص می‌کند. .IP \fB\-fdoc\-dir=\fR\fIdir\fR 4 .IX Item "-fdoc-dir=dir" مشابه با \fB\-fdoc\fR، اما مستندات را در پوشه \fIdir\fR می‌نویسد. این گزینه می‌تواند همراه با \&\fB\-fdoc\-file=\fR\fIfile\fR استفاده شود تا مسیر پرونده و پوشه خروجی را به‌طور مستقل تنظیم کند. .IP \fB\-fdoc\-file=\fR\fIfile\fR 4 .IX Item "-fdoc-file=file" مشابه با \fB\-fdoc\fR، اما مستندات را در پرونده \fIfile\fR می‌نویسد. این گزینه می‌تواند همراه با \&\fB\-fdoc\-dir=\fR\fIdir\fR استفاده شود تا مسیر پرونده و پوشه خروجی را به‌طور مستقل تنظیم کند. .IP \fB\-fdoc\-inc=\fR\fIfile\fR 4 .IX Item "-fdoc-inc=file" مشخص کردن \fIfile\fR به عنوان یک پرونده ماکروی \fIDdoc\fR برای خواندن. می‌توان از چندین گزینه \fB\-fdoc\-inc\fR استفاده کرد و پرونده‌ها به همان ترتیب خوانده و پردازش می‌شوند. .IP \fB\-fdump\-c++\-spec=\fR\fIfile\fR 4 .IX Item "-fdump-c++-spec=file" برای پرونده‌های منبع D، اعلان‌های C++ متناظر را در \fIfile\fR تولید می‌کند. .IP \fB\-fdump\-c++\-spec\-verbose\fR 4 .IX Item "-fdump-c++-spec-verbose" در پیوند با \fB\-fdump\-c++\-spec=\fR بالا، کامنت‌هایی را برای اعلان‌های نادیده‌گرفته‌شده در هدر C++ تولیدشده اضافه می‌کند. .IP \fB\-fsave\-mixins=\fR\fIfile\fR 4 .IX Item "-fsave-mixins=file" کد گسترش‌یافته از عبارت‌های \f(CW\*(C`mixin\*(C'\fR در D را تولید کرده و منابع پردازش‌شده را در \fIfile\fR می‌نویسد. این گزینه برای اشکال‌زدایی خطاهای کامپایل مفید است و کدهای منبع را برای نمایش در دیباگرها آماده می‌سازد. .SS "هشدارها (Warnings)" .IX Subsection "Warnings" هشدارها پیام‌های تشخیصی هستند که ساختارهایی را گزارش می‌دهند که ذاتاً نادرست نیستند اما پرخطر بوده یا نشان می‌دهند که احتمالاً اشکالی در برنامه وجود دارد. این پیام‌ها مانع از کامپایل برنامه نمی‌شوند مگر اینکه گزینه \fB\-Werror\fR مشخص شده باشد. .IP \fB\-Wall\fR 4 .IX Item "-Wall" تمام پیام‌های هشدار را فعال می‌کند. هشدارها بخش تعریف‌شده‌ای از زبان D نیستند، و تمام ساختارهایی که این گزینه برای آن‌ها پیام هشدار تولید می‌کند کدهای معتبری محسوب می‌شوند. .IP \fB\-Walloca\fR 4 .IX Item "-Walloca" این گزینه در مورد تمام استفاده‌ها از "alloca" در کد منبع هشدار می‌دهد. .IP \fB\-Walloca\-larger\-than=\fR\fIn\fR 4 .IX Item "-Walloca-larger-than=n" در مورد استفاده‌های نامحدود از alloca، و استفاده‌های محدودی از alloca که کران آن‌ها می‌تواند بزرگتر از \fIn\fR بایت باشد هشدار می‌دهد. گزینه \fB\-Wno\-alloca\-larger\-than\fR هشدار \fB\-Walloca\-larger\-than\fR را غیرفعال می‌کند و معادل \&\fB\-Walloca\-larger\-than=\fR\fISIZE_MAX\fR یا بزرگتر است. .IP \fB\-Wno\-builtin\-declaration\-mismatch\fR 4 .IX Item "-Wno-builtin-declaration-mismatch" اگر یک تابع توکار با امضای ناسازگار اعلان شده باشد، هشدار می‌دهد. .IP \fB\-Wcast\-result\fR 4 .IX Item "-Wcast-result" در مورد تبدیل نوع‌هایی (cast) که نتیجه تهی (null) یا صفر تولید می‌کنند هشدار می‌دهد. در حال حاضر این بررسی تنها برای تبدیل بین انواع داده موهومی و غیرموهومی، یا تبدیل نوع بین کلاس‌های D و C++ انجام می‌شود. .IP \fB\-Wno\-deprecated\fR 4 .IX Item "-Wno-deprecated" در مورد استفاده از ویژگی‌ها و نمادهای منسوخ‌شده با ویژگی \f(CW\*(C`deprecated\*(C'\fR هشدار نمی‌دهد. .IP \fB\-Werror\fR 4 .IX Item "-Werror" تمام هشدارها را به خطا تبدیل می‌کند. .IP \fB\-Wextra\fR 4 .IX Item "-Wextra" برخی فلگ‌های هشدار اضافی را که توسط \fB\-Wall\fR فعال نمی‌شوند فعال می‌کند. .Sp \&\fB\-Waddress \&\-Wcast\-result \&\-Wmismatched\-special\-enum \&\-Wunknown\-pragmas\fR .IP \fB\-Wmismatched\-special\-enum\fR 4 .IX Item "-Wmismatched-special-enum" هنگامی که یک نوع شمارشی (enum) که کامپایلر آن را به عنوان خاص تشخیص می‌دهد با اندازه‌ای متفاوت از نوع توکاری که بازنمایی می‌کند اعلان شود، هشدار می‌دهد. .IP \fB\-Wspeculative\fR 4 .IX Item "-Wspeculative" تمام پیام‌های خطا حاصل از کامپایل‌های فرضی، مانند \f(CW\*(C`_\|\_traits(compiles, ...)\*(C'\fR را فهرست می‌کند. این گزینه پیام‌ها را به صورت هشدار گزارش نمی‌کند، بنابراین هنگام استفاده از گزینه \fB\-Werror\fR این پیام‌ها هرگز تبدیل به خطا نمی‌شوند. .IP \fB\-Wunknown\-pragmas\fR 4 .IX Item "-Wunknown-pragmas" هنگام مواجهه با دستور \f(CWpragma()\fR که توسط \fBgdc\fR شناخته نمی‌شود هشدار می‌دهد. این با گزینه \fB\-fignore\-unknown\-pragmas\fR تفاوت دارد که در آن پراگمایی که بخشی از زبان D است اما توسط کامپایلر پیاده‌سازی نشده است گزارش نمی‌شود. .IP \fB\-Wno\-varargs\fR 4 .IX Item "-Wno-varargs" در مورد استفاده‌های مشکوک از ماکروهای مورد استفاده برای مدیریت آرگومان‌های متغیر مانند \f(CW\*(C`va_start\*(C'\fR هشدار نمی‌دهد. .IP \fB\-fno\-ignore\-unknown\-pragmas\fR 4 .IX Item "-fno-ignore-unknown-pragmas" پراگماهای پشتیبانی‌نشده را به رسمیت نمی‌شناسد. هر \f(CWpragma()\fR مشاهده‌شده که بخشی از زبان D نباشد منجر به خطا خواهد شد. این گزینه اکنون منسوخ شده است و در نسخه‌های آینده حذف خواهد شد. .IP \fB\-fmax\-errors=\fR\fIn\fR 4 .IX Item "-fmax-errors=n" حداکثر تعداد پیام‌های خطا را به \fIn\fR محدود می‌کند، که در این نقطه \&\fBgdc\fR به جای ادامه پردازش کد منبع از کار می‌ایستد. اگر \fIn\fR برابر با 0 باشد (پیش‌فرض)، محدودیتی در تعداد پیام‌های خطای تولیدشده وجود نخواهد داشت. .IP \fB\-fsyntax\-only\fR 4 .IX Item "-fsyntax-only" کد را برای خطاهای نحوی بررسی می‌کند، اما عملاً آن را کامپایل نمی‌کند. این گزینه می‌تواند در پیوند با \fB\-fdoc\fR یا \fB\-H\fR برای تولید پرونده‌ها به ازای هر ماژول موجود در خط فرمان استفاده شود، بدون اینکه هیچ پرونده خروجی دیگری تولید شود. .IP \fB\-ftransition=\fR\fIid\fR 4 .IX Item "-ftransition=id" اطلاعات تکمیلی در مورد تغییرات زبان D مشخص‌شده با \fIid\fR گزارش می‌دهد. مقادیر زیر پشتیبانی می‌شوند: .RS 4 .IP \fBall\fR 4 .IX Item "all" فهرست کردن اطلاعات تمام گذارهای زبان D. .IP \fBcomplex\fR 4 .IX Item "complex" فهرست کردن تمام استفاده‌ها از انواع مختلط یا موهومی. .IP \fBfield\fR 4 .IX Item "field" فهرست کردن تمام فیلدهای غیرقابل تغییر که یک نمونه شیء را اشغال می‌کنند. .IP \fBin\fR 4 .IX Item "in" فهرست کردن تمام استفاده‌ها از \f(CW\*(C`in\*(C'\fR روی پارامتر. .IP \fBnogc\fR 4 .IX Item "nogc" فهرست کردن تمام تخصیص‌های پنهان زباله‌روب (GC). .IP \fBtemplates\fR 4 .IX Item "templates" فهرست کردن آمار مربوط به نمونه‌سازی‌های قالب. .IP \fBtls\fR 4 .IX Item "tls" فهرست کردن تمام متغیرهایی که به حافظه محلی نخ (Thread Local Storage) می‌روند. .RE .RS 4 .RE .SS "گزینه‌های پیوند (Options for Linking)" .IX Subsection "Options for Linking" این گزینه‌ها زمانی اعمال می‌شوند که کامپایلر پرونده‌های شیء را در یک پرونده خروجی اجرایی پیوند می‌دهد. اگر کامپایلر مرحله پیوند را انجام ندهد، این گزینه‌ها بی‌اثر خواهند بود. .IP \fB\-defaultlib=\fR\fIlibname\fR 4 .IX Item "-defaultlib=libname" مشخص کردن کتابخانه‌ای که هنگام پیوند دادن به جای libphobos استفاده می‌شود. گزینه‌های تعیین‌کننده اتصال libphobos مانند \fB\-static\-libphobos\fR یا \fB\-shared\-libphobos\fR نادیده گرفته می‌شوند. .IP \fB\-debuglib=\fR\fIlibname\fR 4 .IX Item "-debuglib=libname" مشخص کردن کتابخانه دیباگ برای استفاده به جای libphobos هنگام پیوند دادن. این گزینه تا زمانی که گزینه \fB\-g\fR نیز در خط فرمان داده نشده باشد، اثری ندارد. گزینه‌های تعیین‌کننده اتصال libphobos مانند \fB\-static\-libphobos\fR یا \fB\-shared\-libphobos\fR نادیده گرفته می‌شوند. .IP \fB\-nophoboslib\fR 4 .IX Item "-nophoboslib" عدم استفاده از Phobos یا کتابخانه زمان اجرای D هنگام پیوند دادن. گزینه‌های تعیین‌کننده اتصال libphobos مانند \fB\-static\-libphobos\fR یا \&\fB\-shared\-libphobos\fR نادیده گرفته می‌شوند. کتابخانه‌های استاندارد سیستم به صورت عادی استفاده می‌شوند، مگر اینکه از \fB\-nostdlib\fR یا \fB\-nodefaultlibs\fR استفاده شده باشد. .IP \fB\-shared\-libphobos\fR 4 .IX Item "-shared-libphobos" در سیستم‌هایی که \fIlibgphobos\fR و \fIlibgdruntime\fR را به هر دو شکل کتابخانه اشتراکی و ایستا ارائه می‌دهند، این گزینه استفاده از نسخه اشتراکی را اجباری می‌کند. اگر هنگام پیکربندی کامپایلر نسخه اشتراکی ساخته نشده باشد، این گزینه هیچ اثری نخواهد داشت. .IP \fB\-static\-libphobos\fR 4 .IX Item "-static-libphobos" در سیستم‌هایی که \fIlibgphobos\fR و \fIlibgdruntime\fR را به هر دو شکل کتابخانه اشتراکی و ایستا ارائه می‌دهند، این گزینه استفاده از نسخه ایستا را اجباری می‌کند. اگر هنگام پیکربندی کامپایلر نسخه ایستا ساخته نشده باشد، این گزینه هیچ اثری نخواهد داشت. .SS "گزینه‌های توسعه‌دهندگان (Developer Options)" .IX Subsection "Developer Options" این بخش گزینه‌های خط فرمانی را شرح می‌دهد که عمدتاً مورد علاقه توسعه‌دهندگان یا ابزارهای زبان است. .IP \fB\-fdump\-d\-original\fR 4 .IX Item "-fdump-d-original" خروجی دادن درخت نحو انتزاعی (AST) فرانت‌اند داخلی پس از مرحله \f(CW\*(C`semantic3\*(C'\fR. این گزینه تنها برای اشکال‌زدایی خود کامپایلر GNU D کاربرد دارد. .IP \fB\-v\fR 4 .IX Item "-v" تخلیه اطلاعات مربوط به مراحل پردازش زبان کامپایلر هم‌زمان با کامپایل برنامه منبع. این شامل فهرست کردن تمام ماژول‌هایی است که مراحل \f(CW\*(C`parse\*(C'\fR، \f(CW\*(C`semantic\*(C'\fR، \&\f(CW\*(C`semantic2\*(C'\fR و \f(CW\*(C`semantic3\*(C'\fR را طی می‌کنند؛ تمام ماژول‌های \&\f(CW\*(C`import\*(C'\fR و مسیرهای فایل آن‌ها؛ و تمام بدنه‌های \f(CW\*(C`function\*(C'\fR که در حال کامپایل هستند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBgpl\fR\|(7)، \fBgfdl\fR\|(7)، \fBfsf\-funding\fR\|(7)، \fBgcc\fR\|(1) و مدخل‌های Info برای \fIgdc\fR و \fIgcc\fR. .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر (c) 2006\-2026 بنیاد نرم‌افزارهای آزاد (Free Software Foundation, Inc.) .PP اجازه کپی، توزیع و/یا تغییر این سند تحت شرایط «مجوز اسناد آزاد گنو» (GNU Free Documentation License)، نگارش 1.3 یا هر نگارش بعدی منتشرشده توسط بنیاد نرم‌افزارهای آزاد داده می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. نسخه‌ای از مجوز در صفحه راهنمای \fBgfdl\fR\|(7) گنجانده شده است.